生产环境使用Passport+Google SSO时出现Invalid_grant错误
invalid_grant 问题排查方案 针对你遇到的生产环境调用 POST https://www.googleapis.com/oauth2/v4/token 返回 invalid_grant 错误,结合开发/测试环境正常的情况,以下是几个高频排查方向:
服务器时间同步异常
Google OAuth的授权验证对时间精度要求很高,如果生产服务器系统时间与标准UTC时间偏差超过5分钟,会直接导致授权凭证失效。执行命令检查服务器时间:date -u若偏差过大,配置NTP服务同步时间即可。
生产环境回调URL未正确配置
即使你确认过Google OAuth客户端配置,也需要再次核对:Google控制台的「授权重定向URI」是否包含生产环境的完整回调地址(比如https://your-domain.com/auth/google/callback),注意路径、域名大小写、HTTPS协议是否完全匹配,localhost之外的地址必须使用HTTPS。环境变量配置错误
检查生产环境的.env文件中,GOOGLE_CLIENT_ID和GOOGLE_CLIENT_SECRET是否与Google控制台的内容完全一致,避免复制时出现空格、换行或字符缺失。授权码重复/过期
授权码是一次性使用的,若生产环境中存在重复提交授权码的逻辑,或者因网络延迟导致授权码在到达Google API时已过期(授权码有效期通常为10分钟),会触发该错误。可以在回调逻辑中添加日志,确认授权码的使用情况。HTTPS配置不规范
生产环境必须使用合法的SSL证书,若证书无效、未配置完整链,或者服务器强制跳转HTTPS时出现异常,可能导致Google返回的授权凭证验证失败。网络/代理限制
生产服务器的防火墙、安全组或代理服务器可能拦截了与Google API的通信,导致请求参数不完整或响应被篡改。可以在服务器上直接执行curl命令测试:curl -X POST https://www.googleapis.com/oauth2/v4/token -d "client_id=YOUR_ID&client_secret=YOUR_SECRET&code=AUTH_CODE&grant_type=authorization_code&redirect_uri=YOUR_REDIRECT_URI"观察返回结果是否正常,排查网络层面的问题。
内容的提问来源于stack exchange,提问作者agsyarif

