Firebase 3 - ref.getAuth() 等效

Firebase 3 - ref.getAuth() equivalent

在 Firebase 2 中,我能够进行同步检查以查看用户是否已登录,例如:

if (!ref.getAuth()) ..go to login page
else ..show page

我可以使用 firebase.auth().currentUser 访问 currentUser 状态,所以我尝试这样做:

if (!firebase.auth().currentUser) ..go to login page
else ..show page

问题是它最初总是空的,所以它重定向到登录页面,然后几分钟后 onAuthStateChanged 发生并且用户登录。

还有办法同步检查吗?或者是否有我可以听取的承诺,以便我可以显示加载微调器或其他东西?谢谢。

我一直在使用身份验证状态侦听器来确定用户是否已登录。

  auth.onAuthStateChanged(function(user) {
    console.log('authStateChanged', user);
    if (user) {
      console.log("Welcome UID:" + user.uid);
    }
  });

当您立即附加该侦听器时,它将以正确的状态触发。

当我 运行 应用程序登录并重新加载页面时,日志输出:

authStateChanged Fl {...}

Welcome UID:052289713245805425655890E9024AB4ADBA5404B3C0

因此您可以在第一次调用侦听器时检测用户是否已登录。

我遇到了同样的问题,因为我使用的是 Angular,所以我在 AngularFire 中发现了一个同步调用 $getAuth()。 https://github.com/firebase/angularfire/blob/master/docs/reference.md#getauth

也许 ReactFire 库中也有一个等价物。 :)