我只是想制作一个简单的应用,但我甚至无法通过验证用户身份。我正在使用Google OAuth Client Library for Java 这些是我目前正在采取的步骤:
生成身份验证网址:
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();
交换访问令牌的验证码。
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"
,但无论我输入什么,它都会出现同样的错误。
我转到项目的Credentials部分来修复它,但由于这是一个已安装的应用程序,因此为项目创建凭据会为我提供 no 选项来设置任何重定向uris。访问更改redirect_uris的唯一方法是为&#34; Web应用程序创建凭据,&#34;但这不是一个网络应用程序,我没有一个可以重定向到的域名。
所以我被卡住了,redirect_uri选项对我来说无法使用,我使用的价值也没有用,老实说,我不知道还有什么可以尝试。我可以采取哪些措施来解决这个问题?
答案 0 :(得分:1)
事实证明,即使它不会用于检索访问令牌,也必须使用相同的redirect_uri
作为身份验证码和访问令牌。