【问题标题】:google apps script post basecamp谷歌应用脚​​本发布大本营
【发布时间】:2015-03-13 04:58:23
【问题描述】:

我正在尝试通过 Google Apps 脚本调用 Basecamp 的新 API。得到,我可以。 POST,没那么多。

从路径开始

https://basecamp.com/xxxxxxx/api/v1/projects/xxxxxxx/todolists.json

我的代码:

var headers = {
  'User-Agent' : BCuseragent, 
  'Authorization' : 'Basic ' +  Utilities.base64Encode(BCuser + ':' + BCpass),
  'Content-Type' : 'application/json',
  'Accept' : 'application/json',
  'validateHttpsCertificates' : false
 }

function getBC(path) {
  var url = BCurl + path;
  var opt = {
    'headers' : headers,
    'method' : "GET"
  };

  var response = UrlFetchApp.fetch(url, opt);
  return response;
}


function postBC(path, payload) {
  var url = BCurl + path;

  var opt = {
    'headers' : headers,
    'method' : "POST",
    'payload' : JSON.stringify(payload)
  };
  var response = UrlFetchApp.fetch(url, opt);
  return response;
}

我作为参数传递的有效负载:

{name: "foo", description: "bar"}

getBC 函数有效 (200 OK),postBC 函数返回 403 错误。然而,我是该项目的所有者,并且我使用 curl 和 Chrome REST 客户端来确认我实际上可以使用相同的授权向该项目发布新的 todolist。

很明显,我的标头在某处格式不正确,但我不知道是怎么回事。

【问题讨论】:

  • 抱歉问题标题太弱了;我在某个地方误入歧途。

标签: google-apps-script basecamp


【解决方案1】:

这是 UrlFetchApp 的一个怪癖。您不能使用通用的“headers”参数设置 Content-Type,而必须使用“contentType”参数。

请参阅此处的“高级参数”表:

https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#fetch(String,Object)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多