You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome扩展MV3后台Service Worker的Firebase Auth用户会话时长咨询

问题

在Chrome MV3扩展的后台Service Worker中使用Firebase Auth,通过自定义令牌完成首次登录:

const cred = await signInWithCustomToken(authClient, token);

MV3后台Service Worker会在约30秒后进入非活动状态,但向其发送消息查询认证状态时,Firebase Auth仍处于持久化状态。自定义令牌1小时后过期无法重复使用,想了解:

  • 后台Service Worker中的用户会话能持续多久?
  • 是否和普通Web应用的Firebase Auth会话一样,直到用户主动登出为止?

回答

后台Service Worker中的Firebase Auth会话和普通Web应用完全一致,默认会持续到用户主动登出,或者会话被Firebase Auth系统主动终止(比如用户账号被禁用、Refresh Token被吊销等),和Service Worker的休眠/激活状态无关,也不受自定义令牌过期的影响,原因如下:

  1. Firebase Auth的持久化机制
    Firebase Auth在浏览器环境(包括Chrome扩展的后台Service Worker)中,默认会将用户会话数据(Refresh Token、用户信息等)持久化存储在浏览器的IndexedDB或localStorage中。即使Service Worker因休眠被销毁,内存中的Auth实例消失,当Service Worker再次被唤醒(比如收到消息触发),重新初始化Firebase Auth实例时,会自动从持久化存储中恢复用户会话状态,所以你能通过authClient.currentUser获取到用户信息。

  2. 自定义令牌的作用仅为首次登录
    自定义令牌的有效期(1小时)只是用来完成首次身份验证,登录成功后,Firebase Auth会自动为该会话生成长期有效的Refresh Token(默认有效期7天,可通过Firebase控制台调整)和短期的ID Token(有效期1小时)。当ID Token过期时,Firebase Auth会自动使用Refresh Token请求新的ID Token,无需再次使用自定义令牌,因此自定义令牌过期不会影响已建立的会话。

  3. Service Worker状态不影响会话持久化
    MV3的Service Worker休眠只是销毁内存中的上下文,但不会清除浏览器的持久化存储。每次Service Worker被唤醒时,都是一个全新的上下文,你需要确保在这个新上下文中重新初始化Firebase Auth实例,这样Firebase就能自动恢复之前的会话状态。

注意事项

  • 每次Service Worker启动(唤醒)时,都要重新初始化Firebase Auth实例,不能只在首次登录时初始化,否则新的上下文无法获取到持久化的会话。
  • 如果需要监听用户认证状态变化,在Service Worker每次启动后都要注册onAuthStateChanged监听,因为休眠后之前的监听会失效。

内容的提问来源于stack exchange,提问作者GorvGoyl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 21:12:50