如何 Link 多个 Auth Provider 到一个 Firebase 帐户?
How to Link Multiple Auth Providers to an Firebase Account?
我无法成功完成,我按照 Firebase 文档中的说明执行了以下步骤:
- 已使用现有身份验证提供程序登录使用(my case:facebook)。
- 完成新身份验证提供程序的登录流程,直到但不包括调用
Auth.signInWith
方法之一。(我的情况:我想 link 电子邮件和密码以及 Google OAUth)。所以这是我不清楚的步骤,我使用 var provider = new firebase.auth.GoogleAuthProvider();
创建了一个新的提供者,但我没有这样做 Firebase.auth().signInWithPopup(provider)
。
- 然后获取 google 的 authcredential 运行
var credential = firebase.auth.GoogleAuthProvider.credential(
googleUser.getAuthResponse().id_token);
(我得到一个未定义的 google 用户错误 )这个错误似乎是适当的,因为我没有使用 Google Oauth 登录,但这就是第二步的状态(不登录)
- 然后这个命令 link 使用 Facebook 提供商
auth.currentUser.link(credential)
的当前用户
我的理解是 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。
希望这些信息能消除您的疑虑。如果这适合你的问题,你能回复我吗?
谢谢。
我无法成功完成,我按照 Firebase 文档中的说明执行了以下步骤:
- 已使用现有身份验证提供程序登录使用(my case:facebook)。
- 完成新身份验证提供程序的登录流程,直到但不包括调用
Auth.signInWith
方法之一。(我的情况:我想 link 电子邮件和密码以及 Google OAUth)。所以这是我不清楚的步骤,我使用var provider = new firebase.auth.GoogleAuthProvider();
创建了一个新的提供者,但我没有这样做Firebase.auth().signInWithPopup(provider)
。 - 然后获取 google 的 authcredential 运行
var credential = firebase.auth.GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);
(我得到一个未定义的 google 用户错误 )这个错误似乎是适当的,因为我没有使用 Google Oauth 登录,但这就是第二步的状态(不登录) - 然后这个命令 link 使用 Facebook 提供商
auth.currentUser.link(credential)
的当前用户
我的理解是 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。
希望这些信息能消除您的疑虑。如果这适合你的问题,你能回复我吗?
谢谢。