如何 Link 多个 Auth Provider 到一个 Firebase 帐户?

How to Link Multiple Auth Providers to an Firebase Account?

我无法成功完成,我按照 Firebase 文档中的说明执行了以下步骤:

  1. 已使用现有身份验证提供程序登录使用(my case:facebook)。
  2. 完成新身份验证提供程序的登录流程,直到但不包括调用 Auth.signInWith 方法之一。(我的情况:我想 link 电子邮件和密码以及 Google OAUth)。所以这是我不清楚的步骤,我使用 var provider = new firebase.auth.GoogleAuthProvider(); 创建了一个新的提供者,但我没有这样做 Firebase.auth().signInWithPopup(provider)
  3. 然后获取 google 的 authcredential 运行 var credential = firebase.auth.GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);我得到一个未定义的 google 用户错误 )这个错误似乎是适当的,因为我没有使用 Google Oauth 登录,但这就是第二步的状态(不登录)
  4. 然后这个命令 link 使用 Facebook 提供商 auth.currentUser.link(credential)
  5. 的当前用户

我的理解是 currentUser 需要 linked 到我现有的提供商 (Facebook)。 google 的凭据变量似乎从未计算过。任何有功能代码示例的人都会有帮助。

如果您想手动 link 一个 google 和 email/pass 帐户到现有的仅限 facebook 的 firebase 用户,您可以执行以下操作: 首先,用户应该登录 Facebook。 Link google 用户:

var provider = new firebase.auth.GoogleAuthProvider();
auth.currentUser.linkWithPopup(provider);

然后 link email/pass 帐户:

auth.currentUser.linkWithCredential(firebase.auth.EmailAuthProvider.credential(auth.currentUser.email, 'password'))

所有这些要 linked 的帐户都必须是新帐户,并且尚未 linked。

@bojeil 我已阅读您的问题,我找到了使用相同电子邮件帐户同时登录 Google 和 Facebook 登录的方法。首先,在 Firebase 中,您需要允许

"Multiple accounts per email address"

Allow multiple accounts per email address

现在您可以使用与 "xyz@gmail.com" 具有相同电子邮件名称的 "xyz@gmail.com" 和 Google 的 Facebook 登录。但是您将遇到 "null" 的电子邮件具有相同电子邮件的第二次登录。您可以使用以下代码段解决空问题。

只需在 firebase 的成功任务中使用此代码段:

地图配置文件 = task.getResult().getAdditionalUserInfo().getProfile();

对象电子邮件 = profile.get("email"); /// 从使用中获取电子邮件,尽管我们使用相同的电子邮件形式 facebook 并 Google 登录帐户。

通过这种方式,您可以使用同一电子邮件登录 Facebook 和 Google。

希望这些信息能消除您的疑虑。如果这适合你的问题,你能回复我吗?

谢谢。