FIRAuth.addAuthStateDidChangeListener会等到初始化结束之后再调用侦听器吗?

时间:2019-03-15 13:06:09

标签: firebase firebase-authentication

有关addAuthStateDidChangeListener函数状态的iOS Firebase Auth文档说明:

  

将一个块注册为“身份验证状态确实已更改”侦听器。在以下情况下调用:

     
      
  • 该块已注册为侦听器,

  •   
  • 具有与当前用户不同的UID的用户登录,或者

  •   
  • 当前用户已退出。

  •   
     

根据标准调用语义将其添加后,立即在主线程上异步调用该块。

上面的第一点和最后一段使我感到困惑。如果我在初始化Firebase之后立即添加侦听器,是否有可能在Firebase Auth从上一个会话中还原用户之前调用该侦听器?

在这种情况下,我该如何区分是由于没有用户还是由于尚未恢复用户而导致使用空用户的侦听器调用?

1 个答案:

答案 0 :(得分:1)

确实有可能在恢复身份验证状态之前调用auth状态侦听器,在这种情况下,最初将以“用户未登录”状态调用侦听器,然后再以“ user”调用已登录”。

这些天,Android SDK实际上隐藏了第一个身份验证状态,但我认为iOS SDK并没有做到这一点。您可能想尝试一下。简单地登录到该应用程序,关闭该应用程序,等待至少一个小时(这样您的访问令牌已过期),然后再次启动该应用程序。

我不确定大多数开发人员如何处理此问题,但是我知道这两种方式:

  1. 明确重定向到登录页面。因此,如果您在没有用户的情况下获得身份验证状态,请显示指向登录页面的链接。在最初带有“未登录”状态的情况下,这意味着用户将稍等片刻,直到恢复登录状态为止。
  2. 进行重定向,等待刷新。从本质上讲,这只是超时,诸如“检测登录状态”之类的东西。对于可能知道不会登录的用户,您可能还希望在其中包括一个显式重定向链接。

我同意,这些都不是移动应用程序中的理想选择,所以我很好奇其他人会做什么。