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

调用Google securetoken接口换取id token返回400 Bad Request问题求助

问题原因

你遇到的INVALID_REFRESH_TOKEN错误确实是因为当前使用的refresh token由Firebase Auth模拟器生成导致的。
Firebase本地模拟器生成的所有身份凭证(包括refresh token、ID token)仅在本地模拟器环境范围内有效,不会同步到Firebase官方生产服务端,你拿着模拟器签发的refresh token去请求谷歌官方生产环境的token刷新接口,服务端无法校验通过,自然会返回无效凭证错误。

解决方案
  • 本地使用模拟器开发时,不需要手动调用REST接口刷新token,Firebase JS SDK在连接模拟器的状态下会自动处理ID token的刷新逻辑,你需要获取最新有效ID token时,直接调用user.getIdToken()方法即可。
  • 如果你需要测试refresh token换取ID token的REST接口功能,可以暂时关闭Firebase Auth模拟器,使用线上真实Firebase Auth服务登录获取refresh token后再发起请求,即可正常得到返回结果。

额外优化提示:你当前代码里直接打印response对象看不到完整的响应内容,需要先解析响应体才能拿到结构化的返回数据,参考写法:

fetch('https://securetoken.googleapis.com/v1/token?key=' + process.env.NEXT_PUBLIC_FIREBASE_API_KEY, {
  method: 'POST',
  headers: {'Content-Type': 'application/x-www-form-urlencoded'},
  body: 'grant_type=refresh_token&refresh_token=' + user.refreshToken
})
.then(response => response.json()) // 新增这行解析响应体
.then(data => console.log(data))
.catch(error => console.error(error))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:54:03