我正在尝试遵循以下指南: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"
以及指南页面中的URL(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的拼写错误,有很多关于此错误的已回答问题,但这特别与Installed application flow有关。我在已安装的应用程序流中找不到与此错误消息相关的已回答问题
最佳答案
当在授权请求中设置的重定向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