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

使用accounts.signInWithPassword时偶现TOKEN_EXPIRED错误的解决方法

解决Firebase Auth调用signInWithPassword时的TOKEN_EXPIRED错误

错误原因解释

这个错误不是要求你提供idToken,而是Firebase Auth客户端SDK本地缓存的**刷新令牌(refresh token)**过期了。即使当前未登录,SDK如果之前缓存了过期的刷新令牌,调用登录接口时会自动尝试用它去刷新会话,从而触发TOKEN_EXPIRED错误。

解决方法

  • 登录前重置Auth状态:调用signInWithPassword之前,先执行signOut()清空本地缓存的过期令牌,再发起登录请求。示例代码:
    firebase.auth().signOut()
      .then(() => {
        return firebase.auth().signInWithEmailAndPassword(email, password);
      })
      .catch(err => {
        // 处理其他登录错误
      });
    
  • 调整持久化策略:如果不需要保留登录状态的持久化,将Auth的持久化设置为NONE,避免本地缓存过期令牌。代码:
    firebase.auth().setPersistence(firebase.auth.Auth.Persistence.NONE);
    
  • 捕获错误后强制清除缓存并重试:在登录的错误捕获逻辑中,判断错误码为TOKEN_EXPIRED时,直接清除本地缓存(比如执行signOut()),然后立刻重试登录,不需要等待几分钟。
  • 存档排除Auth缓存数据:确保你的自动存档逻辑只存储业务数据,不要包含Firebase Auth的本地缓存内容,避免加载存档时恢复过期令牌。

关于等待时间的问题

不需要等待几分钟,只要清除本地的过期缓存,就能立即重新发起登录请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:13:10