【问题标题】:Error: invalid_request, error_description: Invalid grant_type parameter or parameter missing when trying to get an access token (Buffer API)错误:invalid_request,error_description:在尝试获取访问令牌(缓冲区 API)时,grant_type 参数无效或缺少参数
【发布时间】:2018-07-23 17:37:54
【问题描述】:

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

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 返回: {"error":"invalid_request","error_description":"无效的 grant_type 参数或缺少参数"}

我做错了什么?

感谢您的宝贵时间。

【问题讨论】:

    标签: jquery json ajax api oauth-2.0


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      文档说:

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

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

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

      我不确定如果您不编码“代码”是否会有所不同,但如果没有该内容类型可能值得尝试。

      编辑 - 我也试过了,没有任何区别。所以:

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

      如果您需要进行跨域调用,也许您可​​以使用 CORS 代替?

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

      应该是这样的:

      【讨论】:

      • 感谢您的回答,但它不起作用。 Buffer API 文档说明如下:但如果您正在编写自己的客户端,请务必将 HTTP Content-Type 标头设置为您的请求的“application/x-www-form-urlencoded”。
      • 奇怪 - 你的帖子看起来不错 - 客户端 ID 或密钥中没有非 ascii 字符 do 需要编码吗?你能显示你提交的原始表单数据吗? (显然混淆了您的客户 ID 和密码!)
      • 这是数据(我更改了client_id和secret中的字符):client_id:“4g7c61a839bt2f9f6x846d72”,client_secret:“gefrh1a1654bde533660282511xf65eq”,redirect_uri:“http://localhost/authreaction”,代码: 1/056ca547b25734385f08c2249ea9b67r,授权类型:“授权码”
      • 您是否尝试过不使用“jsonp”数据类型?我不知道你可以在帖子上使用它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-01
      • 1970-01-01
      • 2014-10-06
      • 1970-01-01
      • 2019-09-14
      • 2016-07-07
      相关资源
      最近更新 更多