我了解默认情况下,Firebase在24小时后会使登录令牌无效。但是,在这段时间之后,我发现这种行为很奇怪。运行该应用程序时,它将检查用户是否已登录,如果已登录,它将进入该应用程序,否则将停留在登录屏幕上:
if self.ref.authData != nil
{
self.performSegueWithIdentifier("mainTabSegue", sender: self)
}
除非令牌在24小时后过期,否则此方法工作正常。然后将发生的是,该应用程序仍将看到authData不是nil并将其发送到下一个VC。下一个VC使用UID,然后导致应用程序崩溃。然后再次运行该应用程序将显示authData实际上为nil,并且将要求用户按预期登录。
因此,问题是为什么在24小时之后,当用户明显未登录时,authData是否不为null? Firebase文档似乎表明,如上所述检查authData是确定用户是否已登录的正确方法。
最佳答案
在进行搜索之前,如果您从authData中提取uid,则可以将该用户传递给第一个视图控制器。如果将用户对象传递给在App Delegate中构造的第一个VC,则您的应用程序将不会崩溃。我隐约记得我的应用发生了类似的事情(即认为用户已登录但随后又变回登录的地方)。我不知道为什么会这样,但是应用程序有可能尝试从中断处开始?
如您所知,您还可以在Firebase上更改令牌的有效期限。