首页 文章

Firebase Web - currentUser返回null

提问于
浏览
0

我正在尝试在登录后获取当前用户,但这返回null . 有我的代码:

var currentUser;
firebase
    .auth()
    .onAuthStateChanged(function(user){
        currentUser = user;
        console.log(currentUser); //this returns my user object 
    });
console.log(currentUser); //this returns "undefined"

var otherCurrentUser = firebase.auth().currentUser;
console.log(otherCurrentUser); // this returns "null"

2 回答

  • 1

    只要用户的身份验证状态发生更改,就会触发 onAuthStateChanged 事件 . user 变量仅在该回调中有用 . 您无法将其传输出该功能 .

    因此,需要用户的所有代码都应该在回调中:

    var currentUser;
    firebase
        .auth()
        .onAuthStateChanged(function(user){
            currentUser = user;
            console.log(currentUser); //this returns my user object 
        });
    

    有关这方面的更多信息,请参阅以下内容:

  • 1
    var otherCurrentUser = firebase.auth().currentUser;
    

    这将返回null,因为auth对象尚未初始化,您需要一个观察者来执行此操作 . 登录时,使用观察者并将UID保存在localstorage中,并在注销时清除localstorage

    观察

    var currentUser;
    firebase.auth().onAuthStateChanged(function(user) {
      if (user) {
          currentUser = user.uid;
          console.log(currentUser); //this returns my user object 
          window.localStorage.setItem("UID",currentUser);
      } else {
          currentUser = "Error"
          console.log(currentUser); //this returns my user object 
          window.localStorage.setItem("UID",currentUser);
           alert(" Error in your login code");
        // No user is signed in.
      }
    });
    

    在此之后,只要您需要获取用户ID,只需使用即可

    var getuid = window.localStorage.getItem("UID")
    console.log(getuid) // will log the UID
    

    注销时只需将其删除即可

    window.localStorage.removeItem("UID");
    

    希望这可以帮助..!

相关问题