首页 文章

firebase身份验证 - firebase是否区分facebook和google登录帐户

提问于
浏览
0

我想使用firebase作为我的应用程序身份验证方法 . 但我希望我的用户使用Google或Facebook登录 . 我有点困惑这里发生的事情 .

假设用户仅使用Facebook成功进行身份验证 . 然后我得到了Facebook的回调,并取得了一些成功 . 现在我将该令牌发送到firebase以进行进一步的身份验证 . Firebase可以返回成功或失败 . 这一部分我明白了 .

但令我困惑的是,如果同一用户使用Google帐户登录,那么这不会被视为不同的登录信息吗? firebase会知道Facebook用户是同一个谷歌用户还是会创建两个不同的帐户?我不希望用户拥有两个不同的帐户,因为他们选择了不同的登录提供商 . 我希望firebase能够知道它的同一个用户 . 这就是为什么我想将firebase身份验证用作其中心位置的原因 . 有人可以告诉我吗?

更新:

谢谢 . 因此,如果我理解正确,至少有一个帐户必须已经登录到firebase以便链接另一个帐户?所以情况就是这样......想象一下我目前使用谷歌帐户登录 . 我如何要求用户链接Facebook帐户?我希望我可以无缝链接第二个帐户,但似乎你不能 . 因此,doni如何提示用户或在什么条件下可以毫不费力地链接第二个帐户?如果没有我直接询问用户,我无法想象这将如何工作 .

2 回答

  • 2

    只要用户为两个提供商使用相同的电子邮件地址,您就可以告诉Firebase将这两个帐户链接在一起 . 见section on linking providers in the Firebase documentation .

  • 1

    Firebase支持多个Auth Providers到一个帐户 . 您所要做的就是使用linkWithCredential(credential)方法 . 这是来自firebase网站的代码片段 .

    mAuth.getCurrentUser().linkWithCredential(credential)
        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "linkWithCredential:success");
                    FirebaseUser user = task.getResult().getUser();
                    updateUI(user);
                } else {
                    Log.w(TAG, "linkWithCredential:failure", task.getException());
                    Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",
                            Toast.LENGTH_SHORT).show();
                    updateUI(null);
                }
    
                // ...
            }
        });
    

    请注意,如果凭据已链接到其他用户帐户,则对linkWithCredential的调用将失败 . 在这种情况下,您必须根据应用程序处理合并帐户和相关数据 .

相关问题