【问题标题】:Firebase: Link facebook account with existing userFirebase:将 facebook 帐户与现有用户关联
【发布时间】:2017-08-24 21:18:22
【问题描述】:

我在 Firebase 中有一个包含活动用户的当前数据库,可以使用用户/密码登录,但现在我正在实现 facebook 登录,我意识到将 facebook 帐户与现有用户链接的唯一方法是只有当用户是已经使用用户/密码登录但不是在登录之前。

我的应用程序中有两个按钮(使用 fb 登录和使用电子邮件登录),但如果我尝试使用现有用户的同一电子邮件通过 fb 登录,我将收到以下错误 auth/account-exists- with-different-credential 并且文档说为了解决这个问题,用户需要先登录然后链接。

您知道是否有一种方法可以链接两个帐户,但无需先执行登录,我的意思是,从登录视图?

【问题讨论】:

    标签: firebase firebase-authentication facebook-login


    【解决方案1】:

    在链接之前,您需要先登录用户。如果您想确保它是同一个用户,这一点很重要。否则,您可以在 Firebase 控制台中为每封电子邮件切换到多个帐户。 解决这个问题的方法是,当您收到错误auth/account-exists-with-different-credential 时,您使用Facebook 登录并且该帐户已作为密码帐户存在后,该错误将包含error.emailerror.credential。 然后,您调用 firebase.auth().fetchProvidersForEmail(error.email) 来解析该电子邮件的提供商 ID 列表。在这种情况下,它将包含['password']。然后,您要求用户提供他们的密码。您调用signInWithEmailAndPassword(error.email, password) 以登录原始用户。然后,您调用 firebase.auth().currentUser.linkWithCredential(error.credential) 将 Facebook 凭据链接到密码帐户。现在两个帐户已合并,用户可以使用其中任何一个登录。

    【讨论】:

    • 听起来不错,输入密码的额外步骤,但最后更好。谢谢!
    • 今天似乎不是这样。 firebase 不再返回 account-exists-with-different-credential 错误。它使用与 google 相同的用户 ID 和不同的 firebase 令牌返回成功响应。如果 firebase 行为没有错误,如何知道该帐户存在。
    • 有什么方法可以在 Android 上复制它吗?
    • @SoldierCorp 你们能帮我吗?
    • @Emil 确保您的登录方法允许每个电子邮件地址只允许一个帐户support.google.com/firebase/answer/6400716?authuser=0
    猜你喜欢
    • 2021-06-26
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多