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

Flutter Web调用Firebase Auth接口报JavaScriptObject/Null类型错误求助

Flutter Web下Firebase Auth getIdTokenResult()类型错误解决办法

在Flutter Web环境中调用await FirebaseAuth.instance.currentUser?.getIdTokenResult()时,会触发如下错误:

期望类型为'JavaScriptObject',但实际得到类型'Null'

使用的firebase-auth版本为4.11.0。

以下是几种可行的解决方式:

  • 校验用户状态有效性:
    即便用了?.安全调用,某些场景下(比如用户会话过期但本地缓存未同步更新),currentUser可能表面非空但内部JS对象已失效。建议先显式校验并增加异常捕获:

    final user = FirebaseAuth.instance.currentUser;
    if (user != null) {
      try {
        final tokenResult = await user.getIdTokenResult();
        // 处理令牌结果
      } catch (e) {
        // 捕获错误后重置会话
        await FirebaseAuth.instance.signOut();
        // 引导用户重新登录
      }
    }
    
  • 升级firebase-auth依赖:
    该问题在firebase-auth 4.12.0及后续版本中已被修复,建议直接升级到最新稳定版。修改pubspec.yaml中的依赖:

    firebase_auth: ^4.12.0 # 或更高稳定版本
    

    执行flutter pub get完成依赖更新。

  • 强制刷新令牌后再调用:
    如果暂时无法升级版本,可在调用getIdTokenResult()前强制刷新令牌,确保会话处于有效状态:

    final user = FirebaseAuth.instance.currentUser;
    if (user != null) {
      await user.getIdToken(true); // 强制刷新令牌
      final tokenResult = await user.getIdTokenResult();
      // 处理令牌结果
    }
    

内容的提问来源于stack exchange,提问作者Code on the Rocks

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 23:16:09