我正在尝试遵循本指南:
Using OAuth 2.0 for Installed Applications
我已经过了第一部分,用户可以授权我的应用访问他们的Google云端硬盘.我在用户授予权限后成功检索了授权码.
不幸的是我陷入第二部分:在发送POST请求以交换访问令牌的授权代码时,我一直遇到redirect_uri_mismatch错误.
该指南说我应该使用“您从开发人员控制台获取的重定向URI”.我在开发者控制台中从此链接下载了凭据:
其中包含具有以下属性的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的屏幕截图示例显示了我尝试过的众多请求之一:
或原始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