[英]Get firebase user id in android
用Firebase电话号码(短信)注册后,我可以从user_id
等获取user_id
和朋友列表。但是在我退出应用程序后,然后重新进入应用程序返回 null (FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();)
我无法获得 Firebase user id
(firebaseUser 返回 null)。 implementation 'com.google.firebase:firebase-auth:21.0.1'
...如何解决问题?
FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
if (firebaseUser != null) { // return null
DatabaseReference reference1 = FirebaseDatabase.getInstance().getReference("Users").child(firebaseUser.getUid());
reference1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NotNull DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
}
@Override
public void onCancelled(@NotNull DatabaseError databaseError) {
}
});
}
Firebase 会在您重新启动应用程序时自动恢复用户凭据。 这需要它调用服务器,其中包括检查帐户是否被禁用。 由于此调用可能需要一些时间才能完成,因此很可能在您调用FirebaseAuth.getInstance().getCurrentUser()
时它仍在进行中。
出于这个原因,最好改为观察FirebaseAuth.instance.authStateChanges()
,如https://stackoverflow.com/collectives/google-cloud/articles/68104924/listen-for-authentication-state-in-android中所示。 当我提到的身份验证检查完成时,将首先调用此回调,因此您可以使用它来响应恢复的登录:
auth.addAuthStateListener(new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
if (firebaseAuth.getCurrentUser() == null) {
Log.i("firebase", "AuthState changed to null");
}
else {
Log.i("firebase", "AuthState changed to "+firebaseAuth.getCurrentUser().getUid());
}
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.