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

时间:2017-07-11 08:03:24

标签: ios swift authentication firebase token

我一直在浏览网页,并尝试了解如何处理登录Firebase用户的用户状态,其中发生以下情况:

  1. 用户已登录该应用。
  2. 管理员在Firebase控制台中禁用/删除用户。
  3. 用户仍在应用内(尽管已在Firebase控制台上禁用/删除该帐户)。
  4. 一个多小时后,用户仍在应用内。 (Firebase ID令牌应该已过期,并且应该调用addStateDidChangeListener())。
  5. 目前,除非我调用getIDTokenForcingRefresh()和signout()用户,否则返回错误是由于禁用/删除用户。用户仍将登录。

    总之,我有以下问题:

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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