Chrome扩展程序中的Firebase身份验证很快过期

时间:2018-07-18 14:11:11

标签: javascript google-chrome firebase firebase-authentication

我建立了一个使用Firebase服务后端的网站。我还在构建一个关联的Chrome扩展程序,该扩展程序将不定期刷新数据,并在有新内容时显示通知徽章。

使用OAuth扩展中的身份验证可以正常工作,但是会话会在短暂的时间后过期,并且需要重新登录,从而使扩展无效。

我尝试在会话之间手动将持久性类型设置为默认值,但是显然在Chrome扩展程序中效果不佳。我想知道在警报API将其唤醒以进行数据提取之前,扩展是否“正在睡眠”正在杀死会话。

Google的示例扩展程序使用Chrome的身份API,我不想使用它,原因很简单,即使我自己的用户也不会使用与我的Chrome个人资料相同的登录电子邮件。

如何在Chrome扩展程序中保持Firebase身份验证状态?我发现了一些有关令牌的粗略建议,但它们都令人发疯。

function login() {
var provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithPopup(provider).then(function (result) {
    window.user = result.user;
    adminCheck();
}).catch(function (error) {
    console.log(error.code, error.message);
}); }

1 个答案:

答案 0 :(得分:1)

发现了我的错误,我走在正确的轨道上–确实与扩展睡眠有关。我在将window.user设置为结果,在某些示例中为某处。当分机休眠时,该死。必须将onAuthStateChanged函数放回原处。

firebase.auth().onAuthStateChanged(function (user) {
    if (user) {
        window.user = user;
        reinitialized = true;
        refreshNotifications();
    } else {
        askForLogin();
    }
});

Google现在真的在推动非持久性后台脚本,因此我不得不重新构建逻辑,因为它每次醒来都会重新运行。