google oauth api v2中缺少grant_type参数?

时间:2014-08-20 15:44:54

标签: java oauth-2.0 token

我正在做这个请求:

POST request to
https://accounts.google.com/o/oauth2/token?
client_secret=xxxxx-x8U-tDOJbCPN3&
grant_type=authorization_code&
redirect_uri=[url]
client_id=xxxxxx-e4u1224f7uqjafv7m1lu2ek5ac01isi4.apps.googleusercontent.com&
code=xxxxxxlpdiZfd_LhYu167gK.QvJZYyoaoQAQ3oEBd8DOtNC9kGrnjwI

因此,正如doc所说,我使用这些标题提出了这个请求:

"Accept-Encoding": "gzip"
"Content-Type": "application/x-www-form-urlencoded"

但是当我这样做时,我得到了400:

{"error":"invalid_request","error_description":"Required parameter is missing: grant_type"}

2 个答案:

答案 0 :(得分:9)

我已经解决了这个问题。问题是我在查询字符串中发送params,正确的方法是将它们作为x-www-form-urlencoded发送。所以正确的要求必须是这样的:

POST /o/oauth2/token? HTTP/1.1
Host: accounts.google.com
Cache-Control: no-cache
Postman-Token: b38df5b3-b64f-338a-1374-220647ee05a0
Content-Type: application/x-www-form-urlencoded

client_secret=xxxxx-x8U-tDOJbCPN3%26&grant_type=authorization_code&redirect_uri=myredirecturi&client_id=xxxxxx-e4u1224f7uqjafv7m1lu2ek5ac01isi4.apps.googleusercontent.com&code=xxxxxxlpdiZfd_LhYu167gK.QvJZYyoaoQAQ3oEBd8DOtNC9kGrnjwI

希望这有帮助

答案 1 :(得分:0)

有一个类似的问题,但在我的情况下,邮递员在标题中留下了一个愚蠢的Content-Type:application / json!

希望这可以避免我为有同样问题的人而挣扎!