1

我使用firebase身份验证为我的web应用程序提供三个提供商:电子邮件密码、谷歌或脸书。我已启用“每个电子邮件地址一个帐户”选项。

当用户使用email密码(带有gmail地址)注册,然后使用google登录时,我预计会收到异常“auth/account-exists-with-difference-credential”,但我没有。他的提供者ID更改为谷歌网站并且他不能再使用他的密码(抛出“auth/wrong-password”)。

这种行为正常吗?

4个答案4

重置为默认值

Firebase Authentication具有特定电子邮件地址的首选提供商的概念。最常见的是,google.com是@gmail.com网站地址,但它们也适用于Facebook和Microsoft帐户。

如果现有帐户稍后再次从首选提供商注册,该提供商将覆盖现有用户帐户。据我所知,没有办法改变这种行为。

另请参阅:

1
  • 谢谢你的回答。关于的链接首选可信的供应商正在提供帮助。这个概念可能是对firebase指南的一个很好的补充。 评论 2021年1月4日17:15
1

如果您设置电子邮件已验证如果用户注册后设置为True,则当用户使用非电子邮件验证的登录提供商登录时,他们的登录提供商不会被替换。

例如,使用Python firebase_admin:

从firebase_admin导入身份验证#从请求中获取令牌authorized_user=auth.verify_id_token(令牌)auth.update_user(authorized_user[“uid”],email_verified=True)

当然,最好核实一下他们的电子邮件地址。只有当你知道他们拥有电子邮件地址时,才使用这个。

1
  • 这非常重要。如果用户的电子邮件注册没有经过验证,那么一旦经过验证的提供商(如谷歌)登录,它就不会被保留。 评论 2023年12月16日12:57
0

我就是这样解决的:https://firebase.google.com/docs/auth/android/account-linking

只需链接“帐户”。

0

2023年更新:

现在您可以选择是否允许“用户帐户链接”。例如,如果您不允许多个帐户具有相同的电子邮件地址,则用户无法创建使用电子邮件地址的Google帐户登录的新帐户[电子邮件保护]如果已经有一个帐户使用电子邮件地址登录[电子邮件保护]和密码。

如果您允许多个帐户使用相同的电子邮件地址,则应用程序的登录流不能依赖电子邮件地址来标识用户帐户。

您可以在Firebase Authentication中的设置下找到此项。

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

Firebase身份验证设置

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.