Firebase匿名身份验证正在触发JS if语句的两端



我遵循了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进行调用,然后使用实际的用户对象进行调用。

最新更新