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时,能得到预期的拒绝响应。
疑问
- Firebase-Admin SDK近期是否有更新可能导致此问题?
- 这是否可能是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?初始化配置错误可能导致验证流程静默挂起,无报错但无法完成。
优先排查步骤
- 将firebase-admin升级至最新稳定版,重新测试验证逻辑。
- 在后端服务器上测试访问Firebase验证端点的连通性,确认网络无限制。
- 解码并检查Token的核心字段,确保与后端项目配置一致。
- 核对Admin SDK初始化代码,确认服务账号配置正确,无参数遗漏。
内容的提问来源于stack exchange,提问作者RukshanJS
相关产品推荐
相关产品推荐

