Google OAuth授权码流兑换令牌遇redirect_uri_mismatch错误求助
Google授权码流redirect_uri_mismatch问题排查与解决
问题背景
原本已通过Google Authorization授权码流成功兑换令牌(Postman、Spring示例项目均正常),但在最终Spring项目首次运行后,突然出现400 redirect_uri_mismatch错误,且后续Postman请求也触发相同错误,配置未做任何变更。
核心排查与解决步骤
1. 严格校验重定向URI的一致性
Google对重定向URI的匹配是逐字符严格校验的,哪怕是大小写、空格、路径拼写差异都会触发错误:
- 直接复制Google凭据页面里的授权重定向URI,粘贴到前端请求、Postman参数以及Spring配置中,避免手动输入出错;
- 检查协议(http/https)、端口、路径是否完全一致,比如本地开发用http就不能写成https,端口8081就不能用8080。
2. 清理缓存与无效授权码
- Spring项目:清理
target编译目录,重启应用,避免配置缓存; - Postman:新建请求测试,清除Google相关的Cookie和缓存,或者用无痕模式打开Postman;
- 授权码是一次性的,且有效期仅10分钟,之前用过的授权码会失效,重新获取新的授权码再兑换令牌。
3. 检查Google凭据状态
- 确认Google Cloud控制台中对应的OAuth 2.0客户端ID未被禁用;
- 检查是否选错了项目,确保使用的凭据和当前测试的项目是同一个。
4. 验证实际请求参数
在Spring项目中通过日志或断点,打印出兑换令牌时实际发送的redirect_uri参数值,和Google凭据里的URI做逐字符对比,排查代码中是否有动态修改URI的逻辑。
快速测试命令
用curl直接测试,排除工具缓存干扰:
curl -X POST https://oauth2.googleapis.com/token \ -d "code=你的授权码" \ -d "client_id=你的客户端ID" \ -d "client_secret=你的客户端密钥" \ -d "redirect_uri=从Google凭据复制的完整URI" \ -d "grant_type=authorization_code"
内容的提问来源于stack exchange,提问作者OtaconKiko
相关产品推荐
相关产品推荐

