【发布时间】:2018-10-22 20:33:30
【问题描述】:
我只是想制作一个简单的应用程序,但我什至无法通过验证用户。我正在使用适用于 Java 的 Google OAuth 客户端库。
这些是我目前正在采取的步骤:
- 启动本地 Web 服务器以侦听 OAuth 身份验证后的环回响应。
-
生成授权 URL:
String url = new AuthorizationCodeRequestUrl(AUTH_URL, CLIENT_ID) .setScopes(scopes) // Contains https://www.googleapis.com/auth/drive.readonly .setRedirectUri(LOCALHOST + r.getPort()) // Port of local web server .build(); - 使用 URL 验证帐户。
- Google 返回验证码。
-
交换身份验证码以获取访问令牌。
TokenResponse token = new AuthorizationCodeTokenRequest(...) .setRedirectUri("http://localhost") // <-- .setClientAuthentication(getClientAuth()) // ClientParametersAuthentication object .execute();
这是我的问题发生的地方。无论我为redirect_uri 赋予什么价值,我总是得到{"error":"redirect_uri_mismatch","error_description":"Bad Request"} 作为回报。
在 Google 上搜索错误,每个结果都说是因为我发送的 redirect_uri 没有在 API 控制台中注册。
当我下载凭证 json 文件时,redirect_uris 部分包含"urn:ietf:wg:oauth:2.0:oob","http://localhost",但无论我输入什么,它都是相同的错误。
我去项目的凭据部分修复它,但由于这是一个已安装的应用程序,为项目创建凭据给了我 no 选项来设置任何重定向 uri。访问更改的 redirect_uris 的唯一方法是为“Web 应用程序”创建凭据,但这不是 Web 应用程序,我没有可以重定向到的域。
所以我被卡住了,redirect_uri 选项对我不可用,并且我使用的任何值都不起作用,老实说,我不知道还能尝试什么。我可以采取哪些步骤来解决此问题?
【问题讨论】:
标签: java google-cloud-platform google-oauth google-oauth-java-client