使用 Android Java Firebase 创建会话

Create Session with Android Java Firebase

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

例如,如果用户登录 his/her 帐户。 He/she 能够在他们不想使用该应用程序时删除其 phone 上的应用程序进程,然后摆脱该应用程序的进程并且会话应该仍在进行中,因此当他们返回时对于他们的应用程序,他们应该仍然处于登录状态,直到 he/she 注销 (unauth)。

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

登录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.........................................");
     }
});

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

我的问题:当点击应用程序时,它会将用户带回登录页面,而它应该将用户带回主 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

已解决

如果身份验证当前为 运行,只需添加意图,当应用程序首次加载到您的 phone 时,它应该直接返回主 activity [=58] =] 你打来电话了。

这是登录 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");
    }

为了在应用程序重新启动时保持身份验证会话,您需要使用 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