gpt4 book ai didi

java - 使用 Android Java Firebase 创建 session

转载 作者:太空宇宙 更新时间:2023-11-03 13:20:24 25 4
gpt4 key购买 nike

我正在使用电子邮件和密码。我已创建用户并验证用户,但我不知道如何为该用户添加 session 。

例如,如果用户登录他/她的帐户。当他/她不想使用该应用程序时,他/她可以在手机上删除该应用程序的进程,然后摆脱该应用程序的进程并且 session 应该仍在进行中,因此当他们返回他们的应用程序时他们仍然应该登录,直到他/她注销 (unauth)。

我在为登录用户创建 session 时遇到问题。我认为必须使用 token ,但我不知道应该如何使用它。

登录 Activity :

Firebase user_data = new Firebase("https://myapp.firebaseio.com"); 
user_data.authWithPassword(login_email.getText().toString(), login_pwd.getText().toString(), new Firebase.AuthResultHandler() {
@Override
public void onAuthenticated(AuthData authData) {
System.out.println("User ID: " + authData.getUid() + ", Provider: " + authData.getProvider());
Toast.makeText(getBaseContext(), "Login success!", Toast.LENGTH_LONG).show();
Intent toMainActivity = new Intent(getApplicationContext(), MainActivity.class);
startActivity(toMainActivity);
}
@Override
public void onAuthenticationError(FirebaseError firebaseError) {
// there was an error
System.out.println("ERROR.........................................");
}
});

这是一个简单的场景:用户登录。(从登录类正在 Intent 到主要 Activity 类)用户不注销但删除应用程序的进程。后来用户决定使用该应用程序。

我的问题:当点击应用程序时,它会将用户带回到登录页面,而它应该将用户带到主 Activity 页面。

已更新 - 初始化

我已经初始化了它仍然没有保存登录状态。

My problem: When click on app, it brings the user back to the Login page whereas it should brought the user to the Main Activity page.

这是主要 Activity 页面:

    protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Firebase.setAndroidContext(this);

setContentView(R.layout.activity_main);
Firebase user_data = new Firebase("https://myapp.firebaseio.com");
user_data.addAuthStateListener(new Firebase.AuthStateListener() {
@Override
public void onAuthStateChanged(AuthData authData) {
if (authData != null) {
System.out.println("Authentication is currently working"); //this did print
} else {
System.out.println("Failed authentication");
}
}
});

AuthData authData = user_data.getAuth();
if (authData != null) {
System.out.println("The state is: " + authData); //this did print
} else {
System.out.println("Failed");
}

我检查了身份验证,它们似乎没问题,但是当我在主 Activity 中登录后删除进程时,它会在我重新加载应用程序时跳回登录页面。

以上auth数据监控结果:

工作授权

Authentication is currently working

状态

The state is: AuthData{uid='simplelogin:3', provider='password', token='***', expires='1426758087', auth='{provider=password, uid=simplelogin:3}', providerData='{email=du16493@gmail.com, isTemporaryPassword=false}'}

Authentication is currently working

已解决

如果身份验证当前正在运行,只需添加 Intent ,当您调用的第一个 Activity 中应用首次加载到您的手机上时,它应该直接返回到主 Activity 中。

这是登录 Activity 页面:

    protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Firebase.setAndroidContext(this);

setContentView(R.layout.activity_main);
Firebase user_data = new Firebase("https://myapp.firebaseio.com");
user_data.addAuthStateListener(new Firebase.AuthStateListener() {
@Override
public void onAuthStateChanged(AuthData authData) {
if (authData != null) {
System.out.println("Authentication is currently working"); //this did print
Intent toMainActivity = new Intent( getBaseContext(), MainActivity.class);
startActivity(toMainActivity);
} else {
System.out.println("Failed authentication");
}
}
});

AuthData authData = user_data.getAuth();
if (authData != null) {
System.out.println("The state is: " + authData); //this did print
} else {
System.out.println("Failed");
}

最佳答案

为了在应用程序重新启动时保持身份验证 session ,您需要使用您的 Android 上下文初始化 Firebase Android 客户端库:

来自 https://www.firebase.com/docs/android/guide/setup.html :

The Firebase library must be initialized once with an Android context. This must happen before any Firebase reference is created or used. You can add the Firebase setup code to your Android Application's or Activity's onCreate method.

@Override
public void onCreate() {
super.onCreate();
Firebase.setAndroidContext(this);
// other setup code
}

Firebase 客户端将在后续应用程序冷启动时自动进行身份验证。要检查身份验证状态,请参阅 Firebase Android: Monitoring Authentication .

关于java - 使用 Android Java Firebase 创建 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29112511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com