我建立了一个使用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);
}); }
答案 0 :(得分:1)
发现了我的错误,我走在正确的轨道上–确实与扩展睡眠有关。我在将window.user设置为结果,在某些示例中为某处。当分机休眠时,该死。必须将onAuthStateChanged函数放回原处。
firebase.auth().onAuthStateChanged(function (user) {
if (user) {
window.user = user;
reinitialized = true;
refreshNotifications();
} else {
askForLogin();
}
});
Google现在真的在推动非持久性后台脚本,因此我不得不重新构建逻辑,因为它每次醒来都会重新运行。