每当用户登录或注销时,我都尝试从firebase方法onAuthStateChanged返回true或false到我的app.js文件中的变量。我有一个代表Firebase Auth对象的类设置,以及一个名为checkUserStatus()的方法,该方法调用onAuthStateChanged方法,如下所示。我验证了此方法是否正确验证了用户是否使用checkUserStatus方法中的控制台日志登录。到目前为止,app.js中的userStatus变量始终返回false(即使用户已登录),并且它仅记录一次-我假设是因为我仅在一次调用checkUserStatus方法app.js。我不知道如何构造代码,因此每次onAuthStateChanged触发时,我的app.js变量中都会得到一个真或假值。
Class Auth {
checkUserStatus(){
let status = false;
auth.onAuthStateChanged(user => {
if (user){
console.log('logged in user:', user.email);
status = true;
} else {
console.log('user is logged out');
}
});
return status;
}
}
// beginning of app.js
let userStatus;
userStatus = auth.checkUserStatus();
console.log(userStatus);
答案 0 :(得分:1)
您要尝试的不是听众的工作方式。如果您需要立即检查以查看用户是否已登录,只需查看auth.currentUser
。它将为您提供当前登录的用户,如果没有,则为null。
您将传递给onAuthStateChanged的侦听器/观察者回调用于响应用户登录状态的更改,而不必使用auth.currentUser
进行检查。它不适合您立即使用时进行立即检查。