【问题标题】:Issue when using firebase.auth().onAuthStateChanged accross two pages跨两个页面使用 firebase.auth().onAuthStateChanged 时出现问题
【发布时间】:2020-07-13 03:56:34
【问题描述】:

我在使用过去可以正常工作的两个 html 页面时遇到了一个小问题。

首先,我有一个包含这种代码的登录页面(login.html):

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
    window.open("main.html",'_self');
  } else {
    // No user is signed in.
    prompt for login ....
    ......
  }
});

其次,我也有这个页面(main.html)包含这种代码:

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
    do serious work ....
    ......
  } else {
    // Let us double check:
    let theUser = firebase.auth().currentUser;

    if (!theUser) {
        // No user is signed in.
        window.open("login.html",'_self');
    }
    // We need some patience :)
    ......
  }
});

一旦用户登录,事情应该转到 main.html;这就是它过去的工作方式。但是现在,不知什么原因;当我登录时,即使我提供了我的凭据,流程也会转到 main.html(应该如此),但会立即反弹回 login.html。

我已经能够检查该块(在 main.html 中):

firebase.auth().onAuthStateChanged(function(user) {...}

没有检测到我已登录。这是为什么呢?

附: 我已验证我的域已添加到 Firebase 控制台的授权域列表中。

【问题讨论】:

    标签: javascript firebase firebase-authentication


    【解决方案1】:

    我遇到了同样的问题。我将其缩小到 Chrome。似乎认为Chrome不允许保存cookie(我检查了设置)。最近的 Chrome 更新可能有问题?就像一个健全性检查一样,在 Firefox 上尝试一下,让我知道它是否有效。它对我有用。

    更新:这是我在控制台记录错误时得到的结果

    {code: "auth/web-storage-unsupported", message: "This browser is not 
    supported or 3rd party cookies and data may be disabled.", a: null}
    

    更新 2:奇怪的是,我禁用了 cookie,尝试过但失败了。重新允许 cookie(就像最初一样)并且现在可以使用。我建议捕获此错误并提示用户确保他们检查浏览器设置。我将在我的应用程序中执行此操作。

    【讨论】:

    • 我使用的不是 Chrome,而是 FireFox。
    • 尝试在您的登录函数调用中捕获和 console.loggimg amy 错误。
    猜你喜欢
    • 2018-11-13
    • 2020-07-19
    • 2020-08-06
    • 2016-10-02
    • 2021-06-03
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    相关资源
    最近更新 更多