1

我正在使用 ActiveCollab HTTPS API 使用 Google Apps 脚本作为将 Google 表单链接到特定项目的一种方式。在项目中创建任务时,我无法弄清楚在 HTTP 请求中的何处使用访问令牌。

也许我错过了它,但文档中的哪些 API 调用需要访问令牌作为 POST 请求的一部分?

我发送的最基本的 POST 请求是:

var token = // token from authentication

{
  "name": "Test task",
  "token": token
}

...它返回一个 401 错误,说我没有经过身份验证。

所以,我尝试了:

var token = // token from authentication

{
  "name": "Test task",
  "username": // my username,
  "password": // my password,
  "token": token
}

......结果相同。那么,哪些调用需要 atoken并且令牌是否进入 POST 有效负载?还是应该在 POST 选项中?

2016 年 3 月 10 日更新

我已将Authorization参数添加到POST请求中,现在在响应中收到无效令牌错误。我已清除缓存并成功重新授权。我的测试功能如下。

function postTicket() {

  // Retrieve the stored token after a successful authorization
  var token = PropertiesService.getScriptProperties().getProperty("token");

  var data = {
    "name": "Testing task"
  }

  var headers = { 
    Authorization: 'Bearer ' + token
  };

  var options = {
    "method": "post",
    "contentType": "application/json",
    "headers": headers,
    "payload": JSON.stringify(data)
  }

  try {
    var url = BASE_URL + "/projects/8/tasks";
    var response = UrlFetchApp.fetch(url, options);
    var json = response.getContentText();
    var data = JSON.stringify(json)

    Logger.log(data);
  } catch (e) {
    Logger.log(e);
  }
}

记录的错误是:

返回代码 500。{"type":"ActiveCollab\Authentication\Exception\InvalidTokenException","message":"授权令牌无效","code":0

4

2 回答 2

3

我遇到了同样的问题,但是在检查了Active Collab SDK 代码后,我发现我们应该使用这些标头:

var headers = { 
  'X-Angie-AuthApiToken': token
};

通过使用此代码,我可以通过 API 创建任务。

于 2017-03-21T07:37:05.937 回答
0

令牌需要使用AuthorizationHTTP 标头发送:

Authorization: Bearer TOKEN_THAT_YOU_GOT_FROM_ACTIVE_COLLAB

这意味着您需要将令牌作为请求标头的一部分发送,而不是有效负载。请查看 Google Apps 文档以了解详细信息(我看到将fetch对象headers作为参数之一,因此平台支持这种类型的交互)。

于 2017-03-09T08:57:37.520 回答