我已经获得了使用 SurveyMonkey API 的 OAuth 流程的前半部分,但是当我尝试将短期授权代码交换为长期 OAuth 访问令牌时,我收到了 HTTP 400 响应。这是SurveyMonkey OAuth 指南的第 3 步。
这是完整交换的删减版:
POST /oauth/token?api_key=<removed> HTTP/1.1
Accept: application/json
Accept-Encoding: gzip, deflate, compress
Content-Length: 338
Content-Type: application/json; charset=utf-8
Host: api.surveymonkey.net
User-Agent: HTTPie/0.7.2
{
"client_id": "<removed>",
"client_secret": "<removed>",
"code": "dKkIJYnimBli3TMHoTdHoT-zkzkUFzfHeaWJJyPVmrYG35R5Q-jLLU-Y7Fg3BR0n3tVTQ6sAmDnwVxHXSjZVdiYTJ7u7SWbLCKgQa061bKJYXSpRhTsEL0v5GMWcMEBC2vje5UjRHp3SScFQEwIIjHKZH5raC5RQJJh.JYWEOqw8Iy-2Ds7km1zYaHGGlxqu",
"grant_type": "authorization_code",
"redirect_uri": "https://app.hubspotqa.com"
}
HTTP/1.1 400 Bad Request
Cache-Control: no-store
Connection: keep-alive
Content-Length: 96
Content-Type: application/json; charset=UTF-8
Date: Fri, 24 Jan 2014 00:05:53 GMT
SM-Request-ID: 41264d11-b93d-4f8b-ad1a-c656ccfa268b
Server: nginx
{
"error": "invalid_request",
"error_description": "Invalid POST body or Content-Type received."
}
我也可以使用其他 HTTP 客户端重现完全相同的错误,但我可以使用SurveyMonkey API 控制台手动获取访问令牌。我究竟做错了什么?
附带问题:OAuth 指南说第 3 步接受 aredirect_uri
但示例 Python 指南使用redirect_url
. 哪个是正确的参数?我可以完全省略吗?我的服务器当然不关心被重定向到任何地方。