我正在尝试遵循本指南: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
错误。
我还尝试从下载的凭据发布到此网址:
"token_uri":"https://accounts.google.com/o/oauth2/token"
以及指导页面(https://www.googleapis.com//oauth2/v4/token)中的网址,但每次我遇到同样的错误。
如何解决此错误并成功交换访问令牌的授权码?
来自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
N.B。我知道关于Web App Authentication flow之后的重定向URI的错误拼写有关此错误的SO有很多已回答的问题,但这与Installed application flow有关。我在安装的应用程序流程
上找不到与此错误消息相关的已回答问题答案 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