【问题标题】:Asana API integration using AJAX使用 AJAX 的 Asana API 集成
【发布时间】:2015-05-24 05:57:37
【问题描述】:

我正在使用 Asana API,在进行 API 调用以获取新的刷新令牌时遇到问题,请让我知道我错在哪里。

我正在通过 Javascript AJAX 进行 API 调用。

app.asana.com/-/oauth_token (POST request)

POST 参数

{
    "grant_type":"refresh_token",
    "client_id":"",
    "client_secret":"",
    "redirect_uri":"",
    "refresh_token":""
}

这是我正在使用的代码:

$.ajax({ 
    url : app.asana.com/-/oauth_token, 
    dataType : 'jsonp', 
    method: 'POST', 
    beforeSend: function (xhr) { 
        xhr.setRequestHeader("Authorization", "Bearer " + accessToken); 
    }, 
    success : function(result) {}, 
    error: function(jqXHR, textStatus, errorThrown){} 
});

我收到的返回错误是:

{ 
    "error": "unsupported_grant_type", 
    "error_uri": "asana.com/developers/documentation/getting-started/…;, 
    "error_description": "The supported grant types are authorization_code and refresh_token." 
}

【问题讨论】:

  • 你应该发布你正在使用的代码和你收到的错误。
  • 这是我正在使用的代码 ---> $.ajax( { url : app.asana.com/-/oauth_token, dataType : 'jsonp', method: 'POST', beforeSend: function (xhr) { xhr.setRequestHeader("Authorization", "Bearer"+accessToken); }, 成功: function(result) {}, error: function(jqXHR, textStatus, errorThrown){} });错误是 { "error": "unsupported_grant_type", "error_uri": "asana.com/developers/documentation/getting-started/…", "error_description": "支持的授权类型是 authorization_coderefresh_token。" }
  • 你是如何设置post参数的?看起来你不是在发送它们。

标签: javascript ajax asana


【解决方案1】:

OAuth 安全客户端注意事项:

请记住,AJAX 调用是在客户端上进行的,并且您进行的调用需要您的 client_secret,您应该将其视为个人密码。从客户端进行此调用会将其暴露给您的用户,并可能导致安全漏洞。

如果您想在 JavaScript 等严格的客户端实现 Asana 的 OAuth,我建议您使用隐式授权类型。这里的缺点是您不会获得刷新令牌,而是需要在您的 access_token 过期时重新授权您的客户端。


解决问题:

当使用刷新令牌进行调用以获取新的访问令牌时,您需要发出如下所示的请求:

     //Request
     POST https://app.asana.com/-/oauth_token

     //POST Parameters
     //Must be either form-data or x-www-form-urlencoded 
     client_id=<client_id>
     client_secret=<client_secret>
     grant_type="refresh_token"
     refresh_token=<refresh_token>

请注意,参数必须是 form-data 或 x-www-form-urlencoded


官方体式节点库

我还建议使用官方的NodeJS Asana Library 来实现这些。

【讨论】:

  • 我查看了文档并下载了 NodeJS Asana 库,其中显示 asana.js 未找到。是否有任何文档或链接,我可以在其中找到完整信息而不会错过任何一步。
  • 您没有从您的网络服务器正确地提供文件,或者没有在您的客户端上使用正确的路径包含它。我更新了自述文件,包括直接从 GitHub 版本中获取它。如果以上答案解决了所提出的问题,请将其标记为准确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-14
  • 1970-01-01
  • 2015-04-20
  • 1970-01-01
  • 2016-11-09
  • 2023-02-22
  • 2015-10-13
相关资源
最近更新 更多