检查" grant_type"参数

时间:2016-06-02 21:21:23

标签: oauth-2.0

我根据此文档使用OAuth 2.0进行授权:(https://developers.vendhq.com/documentation/oauth.html#oauth)并出现此错误:

  

"错误":" invalid_request"," error_description":"请求缺少必需参数,包含无效参数值,包括参数不止一次,否则会出现格式错误。检查\" grant_type \" 。参数"

请求

方法:发布

Content-Type: application/x-www-form-urlencoded

URL : https://{domain_prefix}.vendhq.com/api/1.0/token

参数:

code          = {code}

client_id     = {app_id}

client_secret = {app_secret}

grant_type    = authorization_code

redirect_uri  = {redirect_uri}

2 个答案:

答案 0 :(得分:9)

根据RFC6749, section 4.1.3,POST请求的编码正文应该看起来像code={code}&client_id={app_id}&client_secret={app_secret}&grant_type=authorization_code&redirect_uri={redirect_uri}

示例:

  

grant_type = authorization_code&安培;代码= SplxlOBeZQQYbYS6WxSbIA&安培; REDIRECT_URI = HTTPS%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb&安培; CLIENT_ID = CLIENT_ID_1234&安培; client_secret = CLIENT_SECRET

不要忘记对重定向Uri进行编码:http://foo.bar/ => http%3A%2F%2Ffoo.bar%2F

关于身份验证错误,可能是因为授权服务器在发布请求中不支持客户端密钥(或者您的客户端不允许使用它)。 然后尝试使用基本身份验证方案添加Authorization标头。 此标头的值为Basic {ENCODED_AUTHENTICATION}{ENCODED_AUTHENTICATION} =base64(client_id + ':' + client_secret)

使用此标头,必须删除帖子请求中的client_idclient_secret。您的请求参数变为code={code}&grant_type=authorization_code&redirect_uri={redirect_uri}

答案 1 :(得分:4)

您需要检查您尝试将POST发送到的网址。您尝试联系的服务不存在或当前不可用。