2016-07-31 77 views
0

我嘗試使用Firebase身份驗證登錄,登錄過程起作用。爲什麼Firebase無法識別登錄用戶?

auth.onAuthStateChanged(function(user) { 
     if(user) { 
     console.log('Logged in'); 
     console.log(user.displayName); 
     document.getElementById('userName').textContent = user.displayName; 
     } else { 
     window.location = '../login'; 
     } 
}); 

上述代碼按預期工作,它記錄用戶顯示名稱和文本'登錄'。

console.log(firebase.auth().currentUser); 

此代碼在同一頁面上,但出人意料地不起作用!它記錄了null。這是官方文件說,要檢索用戶

var user = firebase.auth().currentUser; 

if (user) { 
    // User is signed in. 
} else { 
    // No user is signed in. 
} 

現在在我的情況下,代碼不工作,始終打印null當前登錄的東西。

回答

0

currentUser將在onAuthStateChanged觀察者觸發後正確填充。在此之前它將是空的。 currentUser是同步的,但初始狀態確定是異步確定的。

+0

這個答案不應該被拒絕。它是正確的。 –

1

請勿使用.currentUser.onAuthStateChanged是您想要從中開始所有UI修改功能/方法的位置。 .onAuthStateChanged需要一秒鐘才能初始化,這就是爲什麼currentUser爲空。

順便說一句,我已經構建出所有6種認證類型都可用的auth系統樣板。 It's on Github。演示它是here