我在我的电子应用程序中使用电子邮件/密码进行了Firebase身份验证,并且可以,但仅在第一页上有效。当我转到第二页时,不再登录。因为我也是elecetron.js和firebase的新手,所以我使用了本教程:https://www.youtube.com/watch?v=bWS0ocfszmE。
login.js
loginBtn.addEventListener('click', function() {
var emailField = document.getElementById('email').value;
var passwordField = document.getElementById('password').value;
firebase.auth().signInWithEmailAndPassword(emailField, passwordField).then(function() {
document.location.href = 'mainPage.html';
console.log(firebase.auth().currentUser);
}).catch(function(error) {
if (error != null) {
console.log(error.message);
alertify.error(error.message);
return;
}
});
secondpage.js
var firebase = require("firebase/app");
require("firebase/auth");
console.log(firebase.auth().currentUser);
我希望登录的用户在控制台中看到输出,但得到空值。
答案 0 :(得分:0)
问题是Firebase身份验证将在每个新页面上检查用户的登录令牌是否仍然有效。由于这可能需要一些时间(并且需要调用服务器),因此这是异步发生的。到您的console.log(firebase.auth().currentUser)
运行时,该过程尚未完成。
这就是为什么您要use an onAuthStateChanged
listener检测用户的身份验证状态的原因:
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
} else {
// No user is signed in.
}
});