我制作了一个Google登录登录js文件,该文件可在我的网站的登录屏幕上使用。但是,我想在我的网站上使用非常不同的javascript文件的其他页面上访问该用户对象(已登录)。如何获得在另一个JavaScript文件上登录的用户对象?另外,我对异步工作原理的了解非常有限,但是如果有人可以帮助我解决这个问题,我将非常感激。
另外,在代码片段上,我在下面显示了一个非常奇怪的错误。当我console.log(name)时,它输出一个空字符串,并在某一时刻输出已登录用户的实际名称。但是,在我没有的任何js文件中,我什至没有初始化name变量,所以我有0了解如何能够获取这些数据。然后,我继续关闭XAMPP并重新启动,现在它打印出一个空字符串,这很令人困惑,因为它应该是未定义的?
我已经尝试阅读多个论坛,并且在这一点上,我已经达到了使用firebase.auth()。onAuthStateChanged(function(user){... CODE ...})的地步。但是,最大的问题是,如果我在函数内部重新分配变量名以在javascript文件中使用,则该函数名将无效,因为它是一个异步函数。我基本上想提取诸如(name = user.displayName,email = user.email,id = user.uid)之类的信息,以便以后在我的JavaScript中使用。
javascript
firebase.initializeApp(config);
firebase.auth().onAuthStateChanged(function(user){
if(user){
var user = firebase.auth().currentUser;
userName = user.displayName;
}
else {
console.log("Not Signed In");
}
});
console.log(name);
console.log(userName);
//SHOWS AN EMPTY STRING ON THIS LINE other_file.js:39
Uncaught ReferenceError: userName is not defined other_file.js:40
at other_file.js:40
答案 0 :(得分:-1)
在定义用户对象的文件中,将userName分配给窗口对象,例如 window.userName = userName 。它将在全球范围内使用。