我正在尝试从以下网址接收访问令牌:
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参数或参数丢失"}
我做错了什么?
感谢您的时间。
答案 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流量检查工具),您应该能够看到发送的实际请求,然后问题可能会更加透明。
应该是这样的:
答案 1 :(得分:0)
这是我的Laravel代码中的问题,现在已经解决了。