Google OAuth安装的应用程序流程:redirect_uri_mismatch

时间:2016-02-02 14:04:16

标签: oauth oauth-2.0 google-oauth2

我正在尝试遵循本指南:Using OAuth 2.0 for Installed Applications

我已经过了第一部分,用户可以授权我的应用访问他们的Google云端硬盘。我在用户授予权限后成功检索了授权码。

不幸的是我被困在第二部分:在发送POST请求以交换访问令牌的授权代码时,我一直遇到redirect_uri_mismatch错误。

指南说我应该使用"您从开发者控制台获得的重定向URI"。我在开发者控制台中从此链接下载了凭据:

Google developer console

其中包含具有以下属性的JSON:

"redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]

我已尝试将redirect_uri请求设置为每个选项;我试过将它设置为空字符串;我也试过它完全失踪了。什么都行不通。

每次我遇到redirect_uri_mismatch错误。

我还尝试从下载的凭据发布到此网址:

"token_uri":"https://accounts.google.com/o/oauth2/token"

以及指导页面(https://www.googleapis.com//oauth2/v4/token)中的网址,但每次我遇到同样的错误。

如何解决此错误并成功交换访问令牌的授权码?

来自Fiddler的屏幕截图示例显示了我尝试过的众多请求之一:

Fiddler screenshot

或原始HTTP请求示例:

POST https://accounts.google.com/o/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: accounts.google.com
Content-Length: 253
Expect: 100-continue
Connection: Keep-Alive

client_id=175836713882-m783k1ksu2rc6vepq35j4o8hhpk94ndj.apps.googleusercontent.com&client_secret=A---removed-for-security---A&code=4---removed-for-security---E&grant_type=authorization_code&redirect_uri=urn%3aietf%3awg%3aoauth%3a2.0%3aoob

N.B。我知道关于Web App Authentication flow之后的重定向URI的错误拼写有关此错误的SO有很多已回答的问题,但这与Installed application flow有关。我在安装的应用程序流程

上找不到与此错误消息相关的已回答问题

1 个答案:

答案 0 :(得分:3)

当授权请求中设置的重定向URI和令牌请求中设置的重定向URI不相同(它必须完全匹配上面列出的值之一)时,会发生此错误。

恕我直言,您应首先验证自动验证请求中的redirect_uri参数。它应该是这样的:

https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=175836713882-m783k1ksu2rc6vepq35j4o8hhpk94ndj.apps.googleusercontent.com&redirect_uri=urn%3aietf%3awg%3aoauth%3a2.0%3aoob