错误:Firebase Auth Google 删除 EmailPassword Auth
Posted
技术标签:
【中文标题】错误:Firebase Auth Google 删除 EmailPassword Auth【英文标题】:Bug: Firebase Auth Google delete EmailPassword Auth 【发布时间】:2018-04-14 16:41:46 【问题描述】:我已经有使用电子邮件和密码注册的用户。
当用户注销,然后用相同邮箱的google登录时,使用相同的userId从Auth登录成功,但是邮箱密码auth消失了(信封图标不见了)。有点被取代了。
我的登录应用有 3 个按钮:
-
手机登录
使用电子邮件和密码登录
使用 Google 登录
假设我有用户 A 已经注册: 电子邮件:awesomeA@gmail.com 通过:一些密码
然后用户 A 出于某种原因退出,然后使用 Google 再次登录,但使用相同的电子邮件 (awesomeA@gmail.com)
在 Console Auth 中,userId A 和以前一样,但是 firebase Auth 中的图标只显示 google,电子邮件密码 Auth 的图标不见了
注意:为什么我使用电子邮件密码作为主要身份验证?因为我的应用程序包含付款信息。因此,如果设备被盗,我想使用 firebase 重新认证系统使其安全。所以只要小偷不知道密码,他就不能用虚拟钱包买任何东西
【问题讨论】:
Google 身份验证是@gmail.com
电子邮件地址的可信提供商。见***.com/questions/37947944/…
@Frank 但是为什么当我使用链接身份验证时,一切正常?为什么不链接两个身份验证而不是删除电子邮件密码身份验证?真的有那么难吗?或者 admin.sdk 中是否有我们可以用来链接身份验证的 api?
我已经编辑了我的问题,以添加我将电子邮件和密码作为我的主要身份验证的理由
当您手动链接时,您肯定知道这两个帐户(电子邮件/密码和谷歌凭据)都属于同一用户,因为它们都是由同一用户获得的。当您使用 Google 登录时,您知道该帐户已通过验证,但您无法判断该电子邮件/密码帐户属于该已验证用户。这就是它被覆盖的原因。
嗯.. 我明白了,这意味着我需要创建活动以重新使用电子邮件和密码重新链接,以确保之前注册的用户是同一用户.. 谢谢 bojeil,简短提问 auth 中如何识别用户是否有邮箱和密码?
【参考方案1】:
如果您使用 sendEmailVerfification() 向用户发送验证电子邮件,并且用户确认了它,它将被添加到提供程序而不是替换它。基本上,拥有 gmail 电子邮件也意味着“已验证”。
【讨论】:
【参考方案2】:当您使用 Google 登录通过 Firebase 进行身份验证时,您将永远无法访问用户的密码。对于使用 Firebase 身份验证的其他第三方登录(Facebook、Twitter)也是如此。
【讨论】:
仅供参考,firebase 技术具有称为重新身份验证的功能,可以在系统不知道密码是什么的情况下检查密码是否正确 确实如此。您正在寻找该重新验证功能吗?该方法需要一个 Firebase 凭据对象...当用户使用 Google 登录时,您是否需要知道如何构建该凭据对象? No.. 我的应用程序支持使用多个身份验证登录,当第一次登录电子邮件和密码时,然后注销,再次登录但使用谷歌,使用电子邮件和密码的身份验证被删除(图标信封不见了) 此时我不确定我是否理解您的问题。您能否更新您的问题以添加更多细节,也许使用一些显示您正在谈论的“图标信封”的屏幕截图?另外,请说明您使用的平台(网络、android、ios 等)。最后,发布用户注销时运行的代码可能会有所帮助。以上是关于错误:Firebase Auth Google 删除 EmailPassword Auth的主要内容,如果未能解决你的问题,请参考以下文章
com.google.firebase.auth.FirebaseAuth 未链接
GetUserByProviderAccountIdError 与 Google 和 Firebase 适配器 Next Auth
使用自己的身份验证服务器的firebase-auth模块和firebase-common-auth的重复
com.firebase.ui.auth.FirebaseUiException:提供程序错误 - Firebase-UI 身份验证 Facebook 登录不起作用