错误: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.. 我的应用程序支持使用多个身份验证登录,当第一次登录电子邮件和密码时,然后注销,再次登录但使用谷歌,使用电子邮件和密码的身份验证被删除(图标信封不见了) 此时我不确定我是否理解您的问题。您能否更新您的问题以添加更多细节,也许使用一些显示您正在谈论的“图标信封”的屏幕截图?另外,请说明您使用的平台(网络、androidios 等)。最后,发布用户注销时运行的代码可能会有所帮助。

以上是关于错误: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 登录不起作用

Unity 中的 Google Firebase 身份验证:如何读取错误代码

为 firebase google auth 指定重定向 url