在Firebase中使用电子邮件/密码集成OAuth

时间:2018-04-16 23:17:28

标签: firebase oauth firebase-authentication

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

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

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

  • [电子邮件/密码]:john.doe @ gmail.com,Password123
  • [Google]: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 帐户链接在一起时,这个 DOESN&H'PHAPPEN。为什么[电子邮件/密码]和OAuth提供商存在此问题?
  3. 我知道最近在Firebase中有一些更新/更改,也许我检查的文档/示例不是最新的。有没有人能够成功地通过OAuth提供商进行[电子邮件/密码]身份验证?任何人都可以在线提供一个很好的例子或者我可以看一下最近的一些文档吗?

    顺便说一下,如果有帮助,可以在Angular5中运行代码。 在此先感谢您的帮助。

    JB

1 个答案:

答案 0 :(得分:1)

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

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