【问题标题】:onAuthStateChanged does not work after refresh刷新后 onAuthStateChanged 不起作用
【发布时间】:2017-04-29 03:50:53
【问题描述】:

当我在登录后立即刷新网页时,以下代码会生成一个空用户。此外,当访问令牌过期时,该页面会自动注销。我该如何解决这个问题?

function initApp() {
    firebase.auth().onAuthStateChanged(function(user) {
      console.log("user in onAuthStateChanged:");
      console.log(user);
      userGlobal = user;
      if (user) {
        $("#logindiv").hide();
        $("#userWelcome").text("Welcome, " + user.email);

        $("#logOut").click(function(){
          firebase.auth().signOut().then(function() {
            $("#logindiv").show();
            $("#testdiv").hide();
          }, function(error) {
            alert(error);
          })
        });

        $("#testdiv").show();

        visiProgcontroller.init(function() {
          visiProgcontroller.makeUIactions();
        })
      }

      else {
        $("#loginButton").click(toggleSignIn);
        $("#logindiv").show();
        $("#testdiv").hide();
      }

    })
  }

  window.onload = function() {
    initApp();
  };

编辑:可能的原因是由于以下代码。当我将其注释掉时, onAuthStateChanged 返回非空用户。我一放回去,用户就为空。关于为什么这会阻止/使用户为空的任何有根据的猜测?

    visiProgcontroller.init(function() {
      visiProgcontroller.makeUIactions();
    });

解决方案

发现错误。我正在做一个 localStorage.clear(),我认为 firebase 以某种方式使用这个本地存储来验证访问令牌。

【问题讨论】:

    标签: javascript firebase firebase-authentication


    【解决方案1】:

    正如您在最近的编辑中所说,您在解雇 localStorage.clear() 后发现了您的错误。有关这可能如何以不同方式影响您的应用程序的更多信息,您可能需要look at this article

    很高兴你让它工作!

    【讨论】:

      猜你喜欢
      • 2021-04-28
      • 1970-01-01
      • 2018-09-22
      • 2018-11-06
      • 1970-01-01
      • 2018-02-02
      • 2016-08-15
      • 2012-09-10
      • 1970-01-01
      相关资源
      最近更新 更多