电子版Firebase电子邮件/密码身份验证

时间:2019-06-08 07:34:55

标签: javascript firebase firebase-authentication electron

我在我的电子应用程序中使用电子邮件/密码进行了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);

我希望登录的用户在控制台中看到输出,但得到空值。

1 个答案:

答案 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.
  }
});