ios - 处理 Swift Firebase 用户登录状态的正确方法

标签 ios swift authentication firebase token

我一直在网上四处寻找并试图找出如何处理发生以下情况的已登录 Firebase 用户的用户状态:

  1. 用户已登录该应用。
  2. 管理员从 Firebase 控制台禁用/删除用户。
  3. 用户仍在应用内(尽管该帐户已在 Firebase 控制台上被禁用/删除)。
  4. 一个多小时后,用户仍在应用中。 (Firebase ID token 应该已经过期并且应该已经调用了 addStateDidChangeListener())。

目前,如果返回错误是由于禁用/删除用户,除非我调用 getIDTokenForcingRefresh() 和 signout() 用户。用户仍将处于登录状态。

总而言之,我有以下问题:

  • 如果用户登录到应用程序,除非调用 signout(),否则用户将保持登录状态。用户帐户是否被禁用或删除无关紧要?
  • Firebase ID token 1 小时到期只会触发 addStateDidChangeListener(),但我必须在处理程序中处理要做什么?
  • 如果我使用 reauthenticateWithCredential() 检查用户的更新状态有什么区别?

提前感谢您的任何澄清和帮助! =)

最佳答案

我不知道我是否会回答你们所有的问题,但我可以根据我使用 Firebase 的经验向你们提供一些信息。

据我所知,如果用户被删除或禁用,他仍将登录应用程序直到 token 过期。在用户被禁用/删除后,任何时候您将尝试在 Firebase 中操作某些数据(读取、写入等),结果 block 中都会出现错误。那是你应该检查它是什么类型的错误并执行一些操作的时候。在这种情况下,如果错误匹配已删除/禁用的用户,您应该注销他并进入登录屏幕。 Here是所有错误的列表。

reauthenticateWithCredential() 是一种方法,但从 Firebase 读取其他数据时会出现相同的错误。因此,如果用户被禁用,调用 reauthenticateWithCredential() 将返回代码为 FIRAuthErrorCodeUserDisabled 的错误。这就是您检测到该用户被禁用的方式。

关于ios - 处理 Swift Firebase 用户登录状态的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45028749/

相关文章:

android - 根据应用程序引擎端点对用户进行身份验证

iOS,如何在 "Metadata and Uploads"中添加阿拉伯语

ios - Xcode 没有显示我的按钮、标签、文本字段和 View

swift - 是否可以访问通过 Apple Music 下载的音乐?

c# - 获取调用线程

JavaScript 注册功能

ios - Xcode 11 Beta 7 命令 PhaseScriptExecution 失败,退出代码非零([CP] Copy Pods Resources)

iphone - uitableview 细胞图像 - 寻找加号

ios - 如何将 NSString 从字符串值转换为 ASCII 值

swift - 更改另一个 ViewController 中 TableViewController 中的单元格标题