【发布时间】: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 个整合在一起时,所有的地狱都崩溃了。一些注意到的错误:
-
场景 A)
- 使用电子邮件/密码/登录/退出创建用户(工作正常)
- 如上所述使用 Google OAuth(关联到同一电子邮件)登录,帐户被链接在一起/登录/退出
- 再次尝试使用电子邮件/密码登录 -> 错误
- Google OAuth 似乎覆盖了之前的帐户设置
-
场景 B)
- 使用电子邮件/密码/登录/退出创建用户(工作正常)
- 如上所述使用 Facebook OAuth(关联到同一电子邮件)登录,帐户链接在一起,但尝试登录时出错,因为我使用的密码与我的 Facebook 密码不匹配。然而,当我将我的 Google 和 Facebook 帐户链接在一起时,这不会发生。为什么 [电子邮件/密码] 和 OAuth 提供商会出现此问题?
我知道 Firebase 最近发生了一些更新/更改,也许我检查的文档/示例不是最新的。是否有人也能够成功地通过 OAuth 提供商进行 [电子邮件/密码] 身份验证?谁能提供一个很好的在线示例或我可以查看的一些最新文档?
顺便说一句,如果有帮助的话,在 Angular5 中运行代码。 提前感谢您的帮助。
JB
【问题讨论】:
标签: firebase oauth firebase-authentication