【发布时间】:2020-06-10 11:23:53
【问题描述】:
我成功实现了 Firebase 匿名身份验证和 Google。我还为用户提供了退出的可能性。我还实现了一个 FirebaseAuth.AuthStateListener,在用户状态发生变化时收到通知。如果我从谷歌退出,监听器会被调用一次。但是,当使用完全相同的代码注销匿名用户时,会调用两次侦听器。是正常行为吗?如何避免这种情况?
public class MainActivity extends AppCompatActivity implements FirebaseAuth.AuthStateListener {
@Inject FirebaseAuth auth;
@Override
protected void onCreate(Bundle savedInstanceState) {
//Basic stuff
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
if (menuItem.getItemId() == R.id.nav_sign_out) {
singOutFirebase();
}
return true;
}
private void singOutFirebase() {
auth.signOut();
}
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
Log.d("TAG", "onAuthStateChanged");
}
@Override
protected void onStart() {
super.onStart();
auth.addAuthStateListener(this);
}
@Override
protected void onStop() {
super.onStop();
auth.removeAuthStateListener(this);
}
}
当我退出匿名帐户时,onAuthStateChanged 打印了两次。对于 Google,只有一次。
【问题讨论】:
-
您好,我很乐意为您提供帮助,但您能出示一下代码吗?应用程序运行时的堆栈跟踪/logcat?我也许能看出什么问题。谢谢。
-
@FEBRYANASAPERDANA 我只在单击按钮时调用
FirebaseAuth.getInsance().signOut();并在实现的onAuthStateChanged方法中,我只有一个日志语句,在匿名身份验证的情况下被触发两次,并且只有一次在谷歌的情况下。 -
@LisDya 向我们展示代码,而不是描述它。您可以通过单击其下方的
edit链接将其添加到问题中。 “寻求调试帮助的问题('为什么这段代码不起作用?')必须包括所需的行为、特定问题或错误和必要的最短代码 重现它在问题本身。没有明确的问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example." -
@FEBRYANASAPERDANA 请检查我的代码。
-
@FrankvanPuffelen 请检查我的代码。
标签: java android firebase firebase-realtime-database firebase-authentication