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

Firebase-Admin SDK的verifyIdToken方法长期挂起问题咨询

问题

技术栈版本

Flutter端依赖

  • firebase_auth: 3.3.20
  • firebase_core: 1.24.0
  • google_sign_in: 5.4.3
  • firebase_messaging: 11.4.4

NestJS后端依赖

  • firebase-admin: "^10.0.1"

问题详情

Flutter端通过FirebaseAuth.instance.currentUser!.getIdToken();获取ID Token,发送至NestJS后端后已确认token变量完整接收该令牌。但执行await verifyIdToken(token)时,方法始终无法解析完成,API客户端Insomnia的请求会持续加载直到主动终止;而发送随机字符串(非JWT)作为token时,能得到预期的拒绝响应。

疑问

  1. Firebase-Admin SDK近期是否有更新可能导致此问题?
  2. 这是否可能是Firebase侧的Bug?(本人对此存疑,但代码约1年前可正常运行)

解决方案分析

针对疑问1:SDK更新的影响

你使用的firebase-admin 10.0.1是2021年的旧版本,后续SDK经历了多个大版本迭代(当前稳定版已到12.x)。旧版本可能存在与Firebase Auth服务端的兼容性问题:比如谷歌Token验证端点的接口变更、签名密钥轮换机制升级,旧SDK无法正确处理新的验证逻辑,导致请求卡住。

针对疑问2:是否为Firebase侧Bug

直接判定为Firebase官方Bug的概率极低,更可能是以下场景导致:

  • 网络连通性问题:后端服务器无法访问Firebase的Token验证服务端点(如https://oauth2.googleapis.com/tokeninfo),请求因超时一直挂起。可在服务器上通过curl命令测试能否正常访问这些端点,同时检查服务器防火墙、安全组是否放行相关出站请求。
  • Token有效性问题:虽然Flutter端能获取Token,但可能存在项目不匹配(Flutter端与后端Admin SDK配置的Firebase项目ID不一致)、Token过期、签名无效等情况。可本地解码Token(用JWT解析工具),核对iss(格式应为https://securetoken.google.com/<你的项目ID>)、aud(应为你的Firebase项目ID)、exp(过期时间戳)字段是否符合预期。
  • Admin SDK初始化错误:后端的Admin SDK初始化是否使用了正确的服务账号密钥、指定了正确的项目ID?初始化配置错误可能导致验证流程静默挂起,无报错但无法完成。

优先排查步骤

  1. 将firebase-admin升级至最新稳定版,重新测试验证逻辑。
  2. 在后端服务器上测试访问Firebase验证端点的连通性,确认网络无限制。
  3. 解码并检查Token的核心字段,确保与后端项目配置一致。
  4. 核对Admin SDK初始化代码,确认服务账号配置正确,无参数遗漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:27:48