繁体   English   中英

Firebase 身份验证提供商悄悄地将密码更改为 google.com

[英]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 身份验证的设置下找到它。

使用此功能有一些注意事项,请在此处阅读

Firebase 身份验证设置

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM