gpt4 book ai didi

java - FireBase 身份验证身份验证状态已更改

转载 作者:太空宇宙 更新时间:2023-11-04 12:33:56 25 4
gpt4 key购买 nike

我希望能够根据用户的登录状态是否发生变化将 Intent 传递给 Activity

我必须在 LoginActivity 的 OnCreate 方法中遵循 AuthStateListener

如果用户已登录,那么我希望将他们转发到 MainActivity

但是,如果用户注销,则他们需要转到 LoginActivity

当他们注销时,问题就出现了,它陷入了无限循环,不断地在 LoginActivity 上触发 Intent 。

当身份验证状态发生变化时,有什么方法可以告诉用户在哪里(哪个 Activity )。这样我就可以将注销的 Intent 调用放在 if 语句中,以检查它们是否已经在 LoginAcitvity 中,从而防止循环

   mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in
Intent intent = new Intent(getBaseContext(), MainActivity.class);
//intent.putExtra("EXTRA_SESSION_ID", sessionId);
startActivity(intent);
Log.d("LOG_Login", "onAuthStateChanged:signed_in:" + user.getUid());
} else {
// User is signed out
String className = this.getClass().getSimpleName();
if (!(className == "LoginActivity")) {
Intent intent = new Intent(getBaseContext(), LoginActivity.class);
//intent.putExtra("EXTRA_SESSION_ID", sessionId);
startActivity(intent);
}

Log.d("LOG_Login", "onAuthStateChanged:signed_out");
}
// ...
}
};

最佳答案

最终的答案是相当合乎逻辑的

我将 Firebase Auth 调用移至我的主要 Activity ,并修改了流程以将 Intent 转发至登录 Activity ,而不是相反。这可以避免任何无限循环

mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in
// Intent intent = new Intent(getBaseContext(), MainActivity.class);
//intent.putExtra("EXTRA_SESSION_ID", sessionId);
// startActivity(intent);
// Log.d("LOG_Login", "onAuthStateChanged:signed_in:" + user.getUid());
} else {
// User is signed out
String className = this.getClass().getName();
if (!(className == "LoginActivity")) {
Intent intent = new Intent(getBaseContext(), LoginActivity.class);
// intent.putExtra("EXTRA_SESSION_ID", sessionId);
startActivity(intent);
}

Log.d("LOG_Login", "onAuthStateChanged:signed_out");
}
// ...
}
};

mAuth.addAuthStateListener(mAuthListener);

关于java - FireBase 身份验证身份验证状态已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37533745/

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