2016-07-31 113 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

相关问题