【问题标题】:Integration OAuth with Email/password in Firebase在 Firebase 中将 OAuth 与电子邮件/密码集成
【发布时间】:2018-09-26 19:10:20
【问题描述】:

我一直在尝试设置一个支持 3 种身份验证类型的应用程序: - 电子邮件/密码 - 谷歌(OAuth) - Facebook (OAuth)

在 Firebase > 身份验证 > 登录方法中,我已启用上述 3 个选项。 在 Firebase > Authentication > Advanced 中,我有以下设置:“防止使用相同的电子邮件地址创建多个帐户”

仅供参考,我在应用中使用 [电子邮件/密码] 创建帐户的密码与我的 Google 帐户不同,这也与我的 Facebook 帐户不同(3 个单独的密码 - 非常真实的场景)

  • [电子邮件/密码]: john.doe@gmail.com, Password123
  • [谷歌]: john.doe@gmail.com, Password456
  • [Facebook]: john.doe@gmail.com, Password789

我希望用户注册他们想要的任何提供商,然后再链接任何其他可用的登录/身份验证选项。

我可以设法正确设置 [电子邮件/密码] 或 OAuth 提供商(Google 和 Facebook)。但是,当我尝试将所有 3 个整合在一起时,所有的地狱都崩溃了。一些注意到的错误:

  1. 场景 A)

    • 使用电子邮件/密码/登录/退出创建用户(工作正常)
    • 如上所述使用 Google OAuth(关联到同一电子邮件)登录,帐户被链接在一起/登录/退出
    • 再次尝试使用电子邮件/密码登录 -> 错误
      • Google OAuth 似乎覆盖了之前的帐户设置
  2. 场景 B)

    • 使用电子邮件/密码/登录/退出创建用户(工作正常)
    • 如上所述使用 Facebook OAuth(关联到同一电子邮件)登录,帐户链接在一起,但尝试登录时出错,因为我使用的密码与我的 Facebook 密码不匹配。然而,当我将我的 Google 和 Facebook 帐户链接在一起时,这不会发生。为什么 [电子邮件/密码] 和 OAuth 提供商会出现此问题?

我知道 Firebase 最近发生了一些更新/更改,也许我检查的文档/示例不是最新的。是否有人也能够成功地通过 OAuth 提供商进行 [电子邮件/密码] 身份验证?谁能提供一个很好的在线示例或我可以查看的一些最新文档?

顺便说一句,如果有帮助的话,在 Angular5 中运行代码。 提前感谢您的帮助。

JB

【问题讨论】:

    标签: firebase oauth firebase-authentication


    【解决方案1】:

    场景 A) 发生是因为电子邮件/密码未经验证。该帐户已取消链接以防止劫持。例如,我可以声明另一个人的 google 电子邮件并创建一个电子邮件/密码帐户。然后,该 Google 帐户的所有者将尝试登录该帐户。我应该无法访问它。要解决此问题,请在创建电子邮件/密码帐户后尝试验证电子邮件。已验证的帐户不会取消关联。

    场景 B)由于密码,这不会发生。 Firebase 无权访问您的 Facebook 或 Google 密码。您确定您正确关联了帐户吗?当您尝试使用与现有电子邮件/密码相同的电子邮件登录 Facebook 时,您将收到凭据已存在的错误(该错误还会返回 Facebook 凭据),您需要先登录到现有的电子邮件/密码帐户,然后将 Facebook 凭据链接到该帐户。

    【讨论】:

    • 我不清楚场景 B 假设我使用电子邮件/psw 创建了一个帐户(假设验证电子邮件已发送并且电子邮件已验证)在我的网络应用程序中并(未经过身份验证)尝试使用 FB 注册(同一封电子邮件),我收到您提到的错误(例如:“凭据已存在”)。你是说我必须使用电子邮件/psw 提供者第一次登录,然后关联我的 FB 帐户? Firebase 内部是这样工作的吗?
    • GoogleAuth 提供程序不会发生这种情况。如果我重复这个但换掉 FB 并使用谷歌它工作正常。另外,我在很多其他网站上都看到了这一点。如果用户想要链接他们的 FB 帐户,我不希望用户必须使用电子邮件/psw 重新登录。如果电子邮件经过验证,我只希望用户现有帐户与 FB 帐户同步。这可能吗?谢谢JB
    • 您必须在链接之前证明之前帐户的所有权。这是一个安全要求。谷歌是不同的,因为它是一个经过验证的帐户。当您使用 google 登录时,您拥有 google 帐户,并且 google 会验证您的 gmail.com 帐户是您的。
    猜你喜欢
    • 2019-07-21
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 2021-09-06
    • 2019-01-16
    • 1970-01-01
    • 2011-01-15
    • 2017-10-15
    相关资源
    最近更新 更多