如何将多个Auth提供程序链接到Firebase帐户?

时间:2016-06-11 21:08:00

标签: facebook web-applications firebase firebase-authentication

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

  1. 使用现有的身份验证提供程序(我的情况:facebook )签名使用。
  2. 完成新身份验证提供程序的登录流程,但不包括调用其中一种Auth.signInWith方法。(我的情况:我想链接电子邮件和密码以及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);我得到一个未定义的googleUser错误)这个错误似乎合适,因为我还没有使用Google Oauth登录,但这就是第二步国家(不要签字)
  4. 然后使用此命令链接Facebook提供商auth.currentUser.link(credential)
  5. 上的当前用户

    我的理解是currentUser需要链接到我现有的Provider(Facebook)。似乎谷歌的凭证变量从未被计算过。任何有功能代码示例的人都会提供帮助。

2 个答案:

答案 0 :(得分:8)

如果您想手动将Google和电子邮件/通行证帐户关联到现有的仅限Facebook的firebase用户,您可以执行以下操作: 首先,用户应该登录Facebook。 链接谷歌用户:

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

然后链接电子邮件/通行证帐户:

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

要链接的所有这些帐户必须是新的且尚未链接。

答案 1 :(得分:1)

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

“每个电子邮件地址有多个帐户”

Allow multiple accounts per email address

现在,您既可以使用具有“ xyz@gmail.com”的Facebook登录名,也可以使用具有与“ xyz@gmail.com”相同的电子邮件名的Google登录名。但是,第二次登录时,您将遇到电子邮件“ null”相同的电子邮件。您可以使用下面的代码片段来解决null问题。

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

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

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

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

希望您能通过此信息消除疑问。如果适合您的问题,您可以再找我吗?。

谢谢。