![](/img/trans.png)
[英]Firebase Authentication: How to know if account with Google or Facebook provider already exist?
[英]Firebase authentication provider silently changes from password to google.com
我为我的 web 应用程序使用 firebase 身份验证,三个提供商:电子邮件密码、谷歌或 facebook。我启用了选项“每个 email 地址一个帐户”。
当用户使用电子邮件密码(地址为 gmail)注册,然后使用谷歌登录时,我希望收到异常“auth/account-exists-with-different-credential”,但我没有。 他的 providerId 更改为google.com并且他不能再使用他的密码(抛出“auth/wrong-password”)。
这是正常行为吗?
Firebase 身份验证具有特定 email 地址的首选提供者的概念。 最常见的是 google.com 是@gmail.com
地址的首选提供商,但我认为它们也存在于 Facebook 和 Microsoft 帐户中。
如果现有帐户稍后再次从首选提供商处注册,则该提供商将覆盖现有用户帐户。 没有办法改变这种行为(我知道)。
另见:
这就是我解决它的方式: https://firebase.google.com/docs/auth/android/account-linking
只需链接“帐户”。
2023 年更新:
您现在可以选择是否要允许“用户帐户链接”。 例如,如果您不允许多个帐户使用相同的 email 地址,则用户无法创建使用地址为 email 的 Google 帐户登录的新帐户 ex@gmail.com 如果已有帐户使用email 地址 ex@gmail.com 和密码。
如果您确实允许多个帐户使用相同的 email 地址,则您应用的登录流程不能依赖 email 地址来识别用户帐户。
您可以在 Firebase 身份验证的设置下找到它。
使用此功能有一些注意事项,请在此处阅读
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.