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

Google OAuth2令牌兑换时出现400 Bad Request错误求助

排查OAuth2令牌兑换400 BAD REQUEST的常见原因

以下是针对你遇到问题的具体排查方向,按优先级排序:

1. 核心请求参数与格式校验

Google令牌端点要求**application/x-www-form-urlencoded格式**的请求体,且必须包含完整参数:

  • 强制参数:code、client_id、client_secret、grant_type=authorization_code、redirect_uri
  • 重点检查redirect_uri:必须和Google Cloud Console中配置的完全一致(包括HTTP/HTTPS、末尾斜杠、路径拼写),且要和你在OAuth Playground中使用的redirect_uri保持统一
  • 如果你用普通Map作为请求体,RestTemplate不会自动处理表单编码,建议改用MultiValueMap并显式设置请求头:
MultiValueMap<String, String> requestBody = new LinkedMultiValueMap<>();
requestBody.add("code", code);
requestBody.add("client_id", yourClientId);
requestBody.add("client_secret", yourClientSecret);
requestBody.add("grant_type", "authorization_code");
requestBody.add("redirect_uri", "http://localhost:8080/auth/google/callback"); // 严格匹配控制台配置

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(requestBody, headers);

ResponseEntity<Map> tokenResponse = restTemplate.postForEntity(tokenEndpoint, request, Map.class);

2. 令牌端点URL正确性

确认tokenEndpoint使用Google官方标准地址:https://oauth2.googleapis.com/token,避免使用旧版或非官方变体地址。

3. Client ID/Secret配置校验

  • 检查application.config中的client ID和secret是否与Google Cloud Console里的OAuth 2.0客户端信息完全一致,注意不要包含多余空格、换行或特殊字符
  • 确保你的客户端类型是「Web应用」,而非桌面/移动应用——不同类型的客户端权限规则不同

4. Code有效性验证

  • OAuth授权码只能被兑换一次,如果你已经在OAuth Playground用过这个code,必须重新生成新的code再测试
  • 确保获取code和兑换令牌时使用的是同一个Google账号,且申请的权限范围(scope)一致

5. RestTemplate配置排查

  • 检查RestTemplate是否被自定义拦截器修改了请求头或参数(比如添加了不必要的认证信息)
  • 开启RestTemplate日志,查看实际发送的请求内容,对比OAuth Playground的请求细节(可通过浏览器开发者工具查看Playground的POST请求):
# application.properties中添加日志配置
logging.level.org.springframework.web.client.RestTemplate=DEBUG

6. Postman调用验证

直接在Postman中向Google令牌端点发送POST请求,带上所有正确参数,确认是否能正常获取令牌。如果可以,说明问题出在你的接口代码逻辑;如果不行,再检查参数或账号配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 08:03:10