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

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

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

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

该指南说我应该使用“您从开发人员控制台获取的重定向URI”.我在开发者控制台中从此链接下载了凭据:

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

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

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

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

每次我点击redirect_uri_mismatch错误.

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

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

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

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

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

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

或原始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

注:我知道关于Web App Authentication flow之后的重定向URI的错误信息,有很多关于这个错误的回答问题,但是这个问题与Installed application flow有关.我在安装的应用程序上找不到与此错误消息有关的问题.流

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

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

https://accounts.google.com/o/oauth2/v2/auth?response_type=code\u0026amp;client_id=175836713882-m783k1ksu2rc6vepq35j4o8hhpk94ndj.apps.googleusercontent.com\u0026amp;redirect_uri=urn:ietf:wg:oauth:2.0:oob

点赞