首页 文章

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

提问于
浏览
8

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

  • 使用现有的身份验证提供程序( my case:facebook )签名使用 .

  • 完成新身份验证提供程序的登录流程,但不包括调用其中一个 Auth.signInWith 方法 . ( my case: i want to link email & password and Google OAUth ) . 所以这是我不清楚的步骤,我使用 var provider = new firebase.auth.GoogleAuthProvider(); 创建了一个新的提供者,而我没有做 Firebase.auth().signInWithPopup(provider) .

  • 然后为了获得google的authcredential我运行 var credential = firebase.auth.GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);I get an undefined googleUser error )这个错误似乎是合适的,因为我还没有使用Google Oauth登录,但这就是第二步说明的内容(不要登录)

  • 然后此命令链接到Facebook提供商上的当前用户 auth.currentUser.link(credential)

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

2 回答

  • 8

    如果您想手动将谷歌和电子邮件/通行证帐户链接到现有的仅限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

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

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

    Allow multiple accounts per email address

    现在您可以使用“xyz@gmail.com”和Google拥有与“xyz@gmail.com”相同的电子邮件名称的Facebook登录 . 但是,对于第二次登录,您将看到具有相同电子邮件的电子邮件为“null” . 您可以使用下面的代码段来克服null问题 .

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

    Map profile = task.getResult() . getAdditionalUserInfo() . getProfile();

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

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

    我希望你能用这个信息清除你的怀疑 . 如果这适合你的问题,请你回复我吗?

    谢谢 .

相关问题