注销匿名身份验证后,FirebaseUser不为null

时间:2018-05-31 10:55:48

标签: java android firebase firebase-authentication

我的应用中有2个活动。我还有一个登录按钮,单击此方法时会调用:

private void signIn() {
    firebaseAuth.signInAnonymously().addOnCompleteListener(this, task -> {
        if (task.isSuccessful()) {
            FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
            if (firebaseUser != null) {
                goToSecondActivity();
            }
        }
    });
}

这是我的goToSecondActivity()方法:

private void goToSecondActivity() {
    startActivity(new Intent(FirstActivity.this, SecondActivity.class));
    finish();
}

正如official doconStart()中指定的那样,我检查firebaseUser对象的无效性如下:

FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
if (firebaseUser != null) {
    goToMapActivity();
}

在第二个活动中,我试图像这样得到用户的uid:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

如果我尝试打印这个uid,一切正常,打印出uid。如果我尝试注销(在SecondActivity中)并再次登录,则会生成一个新的uid,这是正确的。问题是如果我再次注销并卸载应用程序并再次启动它,即使我等了5个小时,也会使用旧用户。

如何解决此问题,如果我退出,下次使用我的应用程序使用上一个生成的用户而不是旧的用户?

1 个答案:

答案 0 :(得分:1)

这是因为Android 6具有自动备份功能。如果您不希望备份数据,或者想要包含或排除某些资源,则需要在清单android:allowBackup代码中调整android:fullBackupContentapplication>。这不是一个错误。

您可以找到更多信息here

简而言之,为了避免这种行为,有必要将android:allowBackup="false"android:fullBackupContent="false"放在manifest.xml中