我正在使用来自谷歌的Firebase,并且在用户身份验证方面遇到了一些问题。在使用Facebook登录后,我在AuthStateListener中获得FirebaseUser,但是如何检测此用户是通过Facebook登录还是其他方式登录?
更新: 正如@Frank van Puffelen所说,FirebaseAuth.getInstance().getCurrentUser().getProviderId()应该返回“facebook”,但在我的情况下,它返回“firebase”。现在我无法弄清楚这种行为背后的原因。当我获得FacebookToken时,我会做类似于以下操作:
AuthCredential credential = FacebookAuthProvider.getCredential(facebookToken.getToken());
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
// If sign in fails, display a message to the user. If sign in succeeds
// the auth state listener will be notified and logic to handle the
// signed in user can be handled in the listener.
if (!task.isSuccessful()) {
}
}
});
在 onComplete() 方法被调用之前,我的 AuthStateListener 获取的用户提供者 ID 不应该是 "facebook"。我做错了什么吗?我遵循了官方 Google 文档。