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

Fastify集成Passport的GoogleStrategy出现invalid_grant错误如何解决?

排查与解决方案

invalid_grant 错误是Google OAuth服务在使用授权码兑换AccessToken时返回的错误,按以下优先级排查:

核心排查点

  • 回调地址完全不匹配(最高概率)
    你的配置中callbackURL仅填写了相对路径/google/callback,而Google要求回调地址必须和你在Google Cloud Console中填写的「已授权重定向URI」完全一致,包括协议、域名、端口、路径。
    修复:将passport配置中的callbackURL改为完整路径:
    callbackURL: "http://localhost:8070/google/callback"
    
    同时确认Google Cloud Console对应OAuth客户端的「已授权重定向URI」中已经添加了完全相同的地址,无多余斜杠、大小写差异。
  • 授权码被重复使用/过期
    回调携带的code仅可使用一次,有效期仅几分钟,如果你刷新了回调页面、多次使用同一个code、或者登录流程间隔太久,都会触发该错误。
    修复:清除浏览器localhost域名下的所有缓存、cookie,关闭浏览器重新打开,从头走登录流程,不要点击浏览器后退或刷新回调页面。
  • 环境变量加载错误
    确认process.env.GOOGLE_CLIENT_ID和process.env.GOOGLE_CLIENT_SECRET被正确加载,你可以在初始化GoogleStrategy前加一行打印代码验证:
    console.log('ClientID:', process.env.GOOGLE_CLIENT_ID, 'ClientSecret:', process.env.GOOGLE_CLIENT_SECRET)
    
    检查输出值是否和Google Cloud Console中的凭证完全一致,无多余空格、字符遗漏,确认dotenv配置正确,.env文件位于项目根目录。
  • OAuth同意屏幕配置问题
    如果你的Google OAuth应用状态为「测试中」,只有在同意屏幕的「测试用户」列表内的账号才可以登录,未添加的账号登录会触发该错误。另外如果选择了「内部」用户类型,仅同组织账号可登录。
    修复:将测试用的Google账号添加到「测试用户」列表,或者将应用发布为正式版。

兜底排查点

如果以上步骤都无效,执行以下操作:

  • 删除node_modules和package-lock.json,重新执行npm install安装依赖,确认passport-google-oauth20和@fastify/passport为兼容的最新版本
  • 检查本地设备的系统时间是否和标准时间一致,时间偏差过大也会导致OAuth签名校验失败
  • 确保你登录的Google账号没有被限制、没有开启特殊的安全设置阻断OAuth授权

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:54:01