我注册为新用户,FirebaseAuth.getInstance().getCurrentUser()
正确返回了已登录的用户。在onCreate()
和onStart()
方法中都是如此。
然后,我从Firebase身份验证控制台中删除了该用户。我期望有FirebaseAuth.getInstance().getCurrentUser() = null
。但是它仍然返回我已删除的用户。在onCreate()
和onStart()
方法中都是如此。
怎么可能?
答案 0 :(得分:1)
您需要将侦听器附加到AuthState,请尝试以下操作:
//Declaration and defination
private FirebaseAuth firebaseAuth;
FirebaseAuth.AuthStateListener authStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
if (firebaseAuth.getCurrentUser() == null){
//Do anything here which needs to be done if user is null
}
else {
}
}
};
//Init and attach
private FirebaseAuth firebaseAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
firebaseAuth = FirebaseAuth.getInstance();
firebaseAuth.addAuthStateListener(authStateListener);
}
答案 1 :(得分:0)
在控制台中删除用户并不会立即通知任何客户端应用程序该用户可能登录的位置。从客户端应用程序的角度来看,仍然有一个具有用户ID和auth令牌的用户。但是该身份验证令牌将不再能够使用受基于用户的安全规则保护的实时数据库,Cloud Firestore和Cloud Storage中的数据。令牌也将不再通过Firebase Admin SDK进行验证。您可以检查这些操作是否失败。 Firebase Auth最终将尝试在一小时内刷新令牌,这将失败,并且用户将注销。