我正在开发一个应用程序,该应用程序使用 Firebase 身份验证通过电话号码登录用户。我想添加一项功能,使用户只能登录一次,即即使用户终止应用程序并再次启动它,他也应该登录。另外,我不想添加注销功能.可以为此做些什么?
最佳答案
实现此目的的最简单方法是使用监听器。假设您有两个 Activity ,LoginActivity
和 MainActivity
。可以在 LoginActivity
中创建的监听器应如下所示:
FirebaseAuth.AuthStateListener authStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
if (firebaseUser != null) {
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
}
};
这基本上意味着如果用户已登录,则跳过 LoginActivity
并转到 MainActivity
。
实例化 FirebaseAuth
对象:
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
然后像这样开始监听 onStart()
方法中的变化:
@Override
protected void onStart() {
super.onStart();
firebaseAuth.addAuthStateListener(authStateListener);
}
在 MainActivity
中,您应该做同样的事情:
FirebaseAuth.AuthStateListener authStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
if (firebaseUser == null) {
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(intent);
}
}
};
这基本上意味着如果用户未登录,则跳过 MainActivity
并转到 LoginActivity
。在此 Activity 中,您应该执行与 LoginActivity
中相同的操作,您应该开始监听 onStart()
中的更改。
在这两个 Activity 中,不要忘记在不再需要的那一刻删除监听器。因此,在您的 onStop()
方法中添加以下代码行:
@Override
protected void onStop() {
super.onStop();
firebaseAuth.removeAuthStateListener(authStateListener);
}
关于java - 一次登录应用程序 - FirebaseAuth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50885891/