Firebase 身份验证链接提供商 Google 登录问题?

时间:2021-03-03 07:16:49

标签: ios swift firebase firebase-authentication

第一次使用 Gmail 和密码注册时,firebase 正确保存了凭据。但是下一次,我使用注册时提供的相同 Gmail 使用 Firebase Google 身份验证登录,凭据在 firebase 帐户中被覆盖。覆盖凭据后,我们无法使用该注册凭据登录。谁能解释一下如何实现这一目标?

Signup with Gmail and password

Google authentication

2 个答案:

答案 0 :(得分:2)

发生了什么

在您使用 Firebase 的电子邮件+密码提供商登录的第一个屏幕截图中。虽然这是一种有效的登录方法,但这意味着任何人都可以输入该电子邮件地址,即使他们实际上无权访问该 Gmail 地址的 Google 帐户。

此处不存在安全风险,但我们对电子邮件地址值的信任度较低。因此,帐户的 emailVerified 属性被标记为 false,您通常需要要求用户在允许他们继续之前验证他们的电子邮件地址。


在第二个屏幕截图中,用户使用相同的电子邮件地址登录,但现在使用的是 Firebase 的 google.com 提供商。这意味着 Google 现在已经验证用户有权访问帐户的基础 gmail 地址。由于 google.com 提供程序是 @gmail.com 帐户的受信任提供程序,因此系统会替换之前的帐户。


另见:

你能做什么

您通常希望防止多个用户使用相同的电子邮件地址进行注册。为此,您需要将 Firebase 配置为仅允许控制台中的每个电子邮件地址使用一个帐户,然后 use account linking 以便合并您方案中的两个(电子邮件+密码和 google.com)帐户。

答案 1 :(得分:1)

您是否在第一次登录时验证了电子邮件或电话号码?如果没有,这是设计使然:

<块引用>

登录完成后,任何以前未经验证的登录机制都将从用户中删除,所有现有会话都将失效。例如,如果有人之前使用相同的电子邮件地址和密码创建了一个未经验证的帐户,则该用户的密码将被删除,以防止声称拥有所有权并创建该未经验证帐户的冒充者再次使用未经验证的电子邮件地址和密码登录。

Source