Firebase Auth - 更新用户的电子邮件后,Firebase Auth 会注销用户

Posted

技术标签:

【中文标题】Firebase Auth - 更新用户的电子邮件后,Firebase Auth 会注销用户【英文标题】:Firebase Auth - After updating the user's email, Firebase Auth logs out the user 【发布时间】:2019-08-12 12:24:56 【问题描述】:

我在我的应用中使用 Firebase 身份验证。我将电子邮件更新如下:

firebaseAuth.currentUser?.updateEmail(email)

电子邮件正在 100% 更新(我也会在必要时进行重新验证)。我的问题是在电子邮件更改后,用户正在退出他的帐户并且必须重新登录。

当我打电话时

val user = firebaseAuth.currentUser 

更新电子邮件后,用户为空,我的应用希望您使用新的电子邮件地址再次登录。

这是正确的行为吗?更改帐户电子邮件后必须重新登录会导致非常糟糕的用户体验。

【问题讨论】:

您是否在刚刚重新验证的当前会话中注销? 【参考方案1】:

我认为 Firebase 是出于安全原因故意这样做的。您可以通过在更改用户的电子邮件后自动调用 Firebase 的登录功能来解决此问题。

但是,如果您使用的是最新版本的 Firebase,我认为这不是正常行为。他们在他们的文档中明确声明您需要重新验证用户才能执行任何个人资料更改(如果他最近没有登录)。

某些安全敏感操作(例如删除帐户、设置主电子邮件地址和更改密码)要求用户最近登录。如果您执行这些操作之一,而用户登录时间过长之前,操作失败并出现 FIRAuthErrorCodeCredentialTooOld 错误。

在我这边,这种效果只发生在用户登录的其他设备上,而不是执行编辑操作的设备上。

【讨论】:

谢谢,这是正确的答案。如果我进行重新身份验证,然后立即更新电子邮件或密码,它可以在不注销用户的情况下工作。 如果答案对您有帮助,请不要犹豫! ? 抱歉,我投了赞成票,我的等级太低了,无法显示 :) 但是感谢 Anas!

以上是关于Firebase Auth - 更新用户的电子邮件后,Firebase Auth 会注销用户的主要内容,如果未能解决你的问题,请参考以下文章

如何在firebase auth中更改电子邮件?

Firebase - Auth - 发现已注册但未验证电子邮件的用户

Firebase Auth 为同一电子邮件创建重复用户

如何在邮件被验证时更新Firebase用户流的数据(Flutter)

如何在邮件被验证时更新Firebase用户流的数据(Flutter)

Firebase Auth -> 使用 signInWithCustomToken 创建的用户没有电子邮件地址