页面加载后,Firebase将从本地存储中还原用户的凭据,并与服务器一起检查它们是否仍然有效。由于这是对服务器的调用,因此可能要花费一些时间并异步发生。这是正常的原因
firebase.auth().currentUser是
null,直到
onAuthStateChanged火灾。
你的问题是,有多种原因
firebase.auth().currentUser可能是
null:
firebase.auth().currentUser
这是null
因为客户端刚刚加载,并且仍在与服务器一起检查凭据。firebase.auth().currentUser
这是null
因为客户端针对服务器检查了凭据,并且客户端未登录。firebase.auth().currentUser
是null
因为用户从未登录过,所以没有要检查的凭据。
您要在情况2和3而不是情况1下导航。
典型的解决方案是在第一次
onAuthStateChanged触发之前不处理导航。届时,您可以确定已针对服务器检查了凭据,或者没有要检查的凭据,在这两种情况下,您都需要导航至登录页面。
加快速度的另一种方法是,当用户首次登录时,自己将一个小令牌存储在本地存储中,然后在应用加载时读取该令牌。如果存在令牌,则可以区分情况1和情况3,并用它稍早导航到正确的页面。
有关此示例,请参见有关架构移动Web应用程序的 I / O讨论。



