繁体   English   中英

如何使用 Firebase 身份验证删除多设备登录的单用户凭据

[英]How To Delete Single user Credential with multiple device login with Firebase Authentication

我有一个Firebase认证账号,用同一个账号登录多台设备。 问题是,如果我从一台设备上删除我的帐户,我需要从所有设备上删除该帐户。 我怎样才能做到这一点?

删除账号的代码:

mAuth.signOut()
mAuth.currentUser?.delete()

您遇到的是预期的行为。 在某些情况下,例如您的getCurrentUser()方法将返回非空 FirebaseUser object,但这并不意味着基础令牌仍然有效。 例如,如果用户删除设备上的 FirebaseUser 而其他设备上的本地令牌尚未刷新,则通常会发生这种情况。 这正是你正在经历的。 在这种情况下,您将获得一个有效的 FirebaseUser object,但随后对经过身份验证的资源的调用(例如尝试刷新令牌)将失败,因为令牌不再有效。

为了克服这种情况,我建议您阅读我在以下帖子中的回答:

此外,如果您使用以下方法删除 FirebaseUser:

mAuth.currentUser?.delete()

无需致电:

mAuth.signOut()

因为delete()方法:

从 Firebase 项目的数据库中删除用户记录。 如果操作成功,用户将被注销

Firebase 身份验证基于 ID 令牌,这些令牌在生成后的一个小时内有效。

因此,当您在一台设备上删除用户时,其他设备上的令牌可能仍然有效长达一个小时。 您实际上不需要删除所有设备上的帐户,但可能确实需要最多一个小时的时间,其他设备才会将用户显示为已注销。

如果这在您的用例中是不需要的,您可能需要阅读有关管理用户会话的文档。 您可以撤销 ID 令牌(如果您知道),如此处所示,或者(更容易)向数据库中的所有客户端发出 UID 已被删除的信号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM