Spring Boot集成Google Drive API:OAuth重定向URI配置问题求助
解决Google Drive API生产环境HTTPS重定向URI配置问题
问题根源在于你创建的是桌面应用类型的OAuth 2.0 Client ID,这类凭据预绑定了localhost相关重定向地址,不支持自定义外部HTTPS域名的重定向配置——这就是你修改JSON或代码无效的核心原因。以下是具体解决步骤:
1. 替换凭据类型为Web应用
- 打开Google Developer Console,进入你的项目
- 导航到「API和服务」→「凭据」页面
- 删除原有的桌面应用类型Client ID(或保留但不再使用)
- 点击「创建凭据」→「OAuth客户端ID」
- 应用类型选择Web应用
- 在「已授权的重定向URI」栏添加你的生产环境HTTPS地址(例如
https://your-production-domain.com/oauth2/callback),注意URI需完全匹配协议、域名和路径 - 创建完成后下载新的JSON凭据文件,替换项目中原有的凭据文件
2. 调整Spring Boot代码中的重定向配置
确保代码中指定的重定向URI与控制台配置的完全一致,示例代码如下:
// 初始化授权流 GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder( HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, Arrays.asList(DriveScopes.DRIVE_FILE)) .setAccessType("offline") .setApprovalPrompt("force") .build(); // 指定生产环境重定向URI String redirectUri = "https://your-production-domain.com/oauth2/callback"; String authorizationUrl = flow.newAuthorizationUrl() .setRedirectUri(redirectUri) .build();
同时确保回调接口的路径与配置的URI一致:
@GetMapping("/oauth2/callback") public String handleOAuthCallback(@RequestParam("code") String authCode) throws IOException { // 处理授权码、获取访问令牌逻辑 return "redirect:/drive-dashboard"; }
3. 验证OAuth同意屏幕配置
进入「OAuth同意屏幕」页面,确认「授权域名」已添加你的生产环境域名,避免出现域名不被信任的授权错误。
注意事项
- 桌面应用类型凭据仅适用于本地调试场景,生产环境必须使用Web应用类型凭据
- 重定向URI必须严格匹配,包括HTTPS协议、完整域名、路径,大小写和斜杠都不能出错
- 如果使用Spring Security OAuth2自动配置,需在
application.yml或application.properties中更新凭据信息和重定向URI配置
内容的提问来源于stack exchange,提问作者Noah Jung
相关产品推荐
相关产品推荐

