我希望程序反复检查用户是否在 Firebase 身份验证中得到验证,直到它通过。例如,当用户在我的应用程序上创建帐户时,程序会切换到一个新 Activity ,等待用户通过验证,然后自动继续进行下一个 Activity 。
我尝试使用 do while
循环来执行此操作,但不幸的是,程序卡住并停留在黑屏。我一路上从未遇到过任何错误消息。
我用这些代码行尝试了这个程序:
EmailVerified = false;
do {
if (mAuth.getCurrentUser().isEmailVerified()) {
EmailVerified = true;
Intent intent = new Intent(VerificationEmailPage.this, MainActivity.class);
startActivity(intent);
}
} while (!EmailVerified);
这样做会导致 Activity 无法加载,并且只会变黑。似乎 Activity 中没有其他代码也被执行。我需要加载 Activity 并不断检查用户是否已通过验证,然后在验证通过后切换到下一个 Activity 。
最佳答案
你现在所做的根本不是一个好主意。相反,您应该使用 AuthStateListener了解用户何时登录。
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// Sign in logic here.
}
}
};
// activate it:
FirebaseAuth.getInstance().addAuthStateListener(mAuthListener);
// deactivate it:
FirebaseAuth.getInstance().removeAuthStateListener(mAuthListener);
监听器将在用户登录或注销时被调用,直到监听器被移除。
阅读更多有关其工作原理的信息:How does the firebase AuthStateListener work?
关于java - 如何在 Firebase 身份验证中反复检查用户是否通过验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59548809/