我正在使用 Google 的 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 documentation
最佳答案
在版本 3.x 及更高版本中,单个用户可以通过多个提供商登录。因此不再有单一提供商 ID 的概念。事实上,当你打电话时:
FirebaseAuth.getInstance().getCurrentUser().getProviderId()
它将始终返回 firebase
。
要检测用户是否使用 Facebook 登录,您必须检查提供商数据:
for (UserInfo user: FirebaseAuth.getInstance().getCurrentUser().getProviderData()) {
if (user.getProviderId().equals("facebook.com")) {
System.out.println("User is signed in with Facebook");
}
}
关于android - 如何确定 Firebase 用户是否使用 facebook 身份验证登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49297493/