【问题标题】:Firebase Auth doesn't work in SafariFirebase 身份验证在 Safari 中不起作用
【发布时间】:2017-05-29 04:47:25
【问题描述】:

按照教程中的建议,我在我的网络应用中实现了 Firebase 身份验证:

function initApp() {
    firebase.auth().onAuthStateChanged(function(user) {
        if (user) {
            // User is signed in.
            } else {
                // No user is signed in.
                console.log("no user signed in");
            }
    });
}

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

这在 Chrome 中完美运行。用户身份验证状态在多个网页中持续存在。我可以在一个页面上登录,并且用户配置文件在下一页上仍然可用。

但是这在 Safari 中不起作用,用户 firebase 用户对象只是消失了。我尝试了各种解决方法,在登录后将用户对象存储在 cookie 或本地存储中,但它们都不起作用。我怎样才能使它在 Safari(和其他浏览器)上以及在 Chrome 上一样工作?

【问题讨论】:

  • 有机会,您是否在 Safari 隐身模式下进行测试?如果是这样,请注意 localStorage 大小在 Safari 隐身模式中为 0
  • 不幸的是它不是私人模式
  • 认证状态存储在localStorage中。如果您没有使用 Safari incognito,您能解释一下导致 localStorage 清除的原因吗?在页面加载时,Firebase 身份验证会在触发 onAuthStateChanged 侦听器之前检查用户是否仍然有效。如果用户被禁用或删除,它将从存储中清除。如果不是这种情况,则其他东西正在清除您的 localStorage。
  • 设置一个演示页面来显示问题会很有用...

标签: javascript authentication firebase safari firebase-authentication


【解决方案1】:

我想通了。当我从 finder 本地存储加载站点时,没有保存身份验证状态(我不知道为什么),但是当我上传站点并从其 URL 访问它时,一切都按预期工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 2021-12-20
    • 2018-12-21
    • 2016-07-09
    • 1970-01-01
    • 2017-02-28
    相关资源
    最近更新 更多