错误:invalid_request,error_description:尝试获取访问令牌时无效的grant_type参数或参数丢失(Buffer API)

时间:2018-02-13 11:04:17

标签: jquery json ajax api oauth-2.0

我正在尝试从以下网址接收访问令牌:

https://api.bufferapp.com/1/oauth2/token.json

以下代码是我的POST请求,根据Buffer API文档和OAuth 2规则,我似乎已经包含了所有内容:

$.ajax({
    type: 'POST',
    url: 'https://api.bufferapp.com/1/oauth2/token.json',
    headers: {
        'Accept': 'application/json',
        'Content-Type': "application/x-www-form-urlencoded; charset=UTF-8",
    },
    data: {
        client_id: "{MY_CLIENT_ID}",
        client_secret: "{MY_CLIENT_SECRET}",
        redirect_uri: "http://localhost/testexample",
        code: "{MY_AUTH_CODE}",
        grant_type: "authorization_code"
    },
    success: function(response) {
        console.log(response);
    },
    error: function(response) { 
        console.log(response);
    },
    dataType: "jsonp"
});

当我执行代码时,我收到错误: net :: ERR_ABORTED,URL返回: {"错误":" invalid_request"," error_description":"无效的grant_type参数或参数丢失"}

我做错了什么?

感谢您的时间。

2 个答案:

答案 0 :(得分:0)

文档说:

  

另请注意,代码参数不得为url编码 - 即。它   应该格式化为1 / mWot20jTwojsd00jFlaaR45而不是   1%2FmWot20jTwojsd00jFlaaR45。

但是在标题中,您将内容设置为:

'Content-Type': "application/x-www-form-urlencoded; charset=UTF-8"

我不确定如果你没有编码"代码"但没有那种内容类型可能值得尝试。

  

编辑 - 我也试过这个并没有任何区别。所以:

我建议删除" jsonp"数据类型,因为它不是GET的POST。可能会为令牌端点不喜欢的请求添加一些内容。或者尝试使用像Postman这样的HTTP工具来发布数据。

如果您需要进行跨源呼叫,也许您可​​以使用CORS?

如果您使用fiddler(或任何其他类型的HTTP流量检查工具),您应该能够看到发送的实际请求,然后问题可能会更加透明。

应该是这样的:

enter image description here

答案 1 :(得分:0)

这是我的Laravel代码中的问题,现在已经解决了。