第一次,在使用 Gmail 和密码注册时,firebase 正确保存了凭据。但是下一次,我使用注册时提供的相同 Gmail 使用 Firebase Google 身份验证登录,凭据将覆盖 firebase 帐户。覆盖凭据后,我们无法使用该注册凭据登录。任何人都可以解释如何实现这一目标吗?
最佳答案
发生了什么
在第一个屏幕截图中,您使用 Firebase 的电子邮件+密码提供商登录。虽然这是一种有效的登录方法,但这意味着任何人都可以输入该电子邮件地址,即使他们实际上没有访问该 gmail 地址的 Google 帐户也是如此。
这里没有安全风险,但是我们对电子邮件地址值的信任度很低。出于这个原因,帐户的 emailVerified
属性被标记为 false
并且您通常希望要求用户在允许他们继续之前验证他们的电子邮件地址。
在第二个屏幕截图中,用户使用相同的电子邮件地址登录,但现在使用的是 Firebase 的 google.com
提供商。这意味着 Google 现在已经验证用户可以访问该帐户的基础 gmail 地址。由于 google.com
提供商是 @gmail.com
帐户的可信提供商,因此系统会替换以前的帐户。
另见:
- Authentication using Facebook at first and then Google causes an error in Firebase for Android
- Firebase Overwrites Signin with Google Account
- Trying to understand Firebase Authentication one account per email address and trusted providers
你能做什么
您通常希望防止多个用户使用相同的电子邮件地址注册。为此,您需要将 Firebase 配置为仅允许控制台中每个电子邮件地址有一个帐户,然后 use account linking以便合并您方案中的两个(电子邮件+密码和 google.com)帐户。
关于ios - Firebase Auth 链接提供商 Google 登录问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66452341/