2016-07-30 41 views
2

認證當我做:刷新爲幾毫秒currentUser是空後獲取如果用戶在火力地堡initializeApp

firebase.initializeApp(config); 
firebase.auth().currentUser; 

的第一次。 但是稍後當前用戶值被填充。當然以前我沒有登出認證。

我該如何初始化App並等到我真的知道用戶已經登錄?我的意思是firebase.initializeAppfirebase.auth()不是承諾。 是否有任何承諾知道該用戶是否登錄?我找不到任何東西。

回答

1

我現在經常使用的onAuthStateChanged()處理程序,如果用戶在簽署檢測。

firebase.initializeApp(config); 
    firebase.auth().onAuthStateChanged((user) => { 
     if (user == null) { 
      // TODO: start sign-in flow 
     } 
     else { 
      // TODO: start actual work 
     } 
    } 
    }); 
+0

但onAuthStateChanged被稱爲即使用戶從來沒有的loggedIn? – elranu

+0

是的。它被立即調用初始/當前已知狀態,然後在狀態改變時立即調用。嘗試一下! –

+0

這是如何完成的。 '.onAuthStateChanged'「通過使用觀察者,確保Auth對象不處於中間狀態 - 例如初始化 - 當您獲得當前用戶時。」 [管理Firebase中的用戶](https://firebase.google.com/docs/auth/web/manage-users)。順便說一句 - 我有一個[Github上的Web認證模板](https://github.com/rhroyston/firebase-auth)。演示[這裏](https://rack.pub/firebase-auth)。 –