我遵循了Google参考文档,但发现firebase auth触发了if语句的两侧。
calcbtn.addEventListener('click', e => {
//Auth
firebase.auth().signInAnonymously().catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
console.log(`${errorCode}: ${errorMessage}`);
// ...
});
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
var isAnonymous = user.isAnonymous;
uid = user.uid;
console.log(`UserID: ${uid}`);
// ...
} else {
// User is signed out.
console.log('Error: User is not authenticated');
// ...
}
// ...
});
返回userID和错误:用户未通过身份验证?
最初,当您附加onAuthStateChanged
时,还没有用户登录。因此,此时您的回调将使用null
进行调用。
然后,由signInAnonymously()
触发的用户登录完成,并使用该user
对象对回调进行另一次调用。
这是Firebase中身份验证状态侦听器的正常操作:它通常最初使用null
进行调用,然后使用实际的用户对象进行调用。