android - 如何确定 Firebase 用户是否使用 facebook 身份验证登录

标签 android firebase firebase-authentication

我正在使用 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/

相关文章:

firebase - Firebase中的UserCredential

arrays - Swift3 iOS -Firebase 如何将节点数据分离到不同的数组和字典中

java - 如何构建自定义 ListView,其中每行都有矩形和圆形

android - 从 Gallery Kotlin Android 旋转图像方向

AndroidAnnotations 和 Dagger 2

ios - Swift 如何使用 `.ChildAdded` 检索根子级

firebase - 使用下载 url 删除 Firebase 存储图像 url

javascript - firebase - 使用电子邮件和密码创建用户返回未定义的uid

javascript - 登录时从用户集合中获取用户数据

java - Android:动画通过代码运行,但不能通过 xml 运行