我一直在网上四处寻找并试图找出如何处理发生以下情况的已登录 Firebase 用户的用户状态:
- 用户已登录该应用。
- 管理员从 Firebase 控制台禁用/删除用户。
- 用户仍在应用内(尽管该帐户已在 Firebase 控制台上被禁用/删除)。
- 一个多小时后,用户仍在应用中。 (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/