Google Apps脚本和外部API

问题描述:

如果我没有弄错,按UrlFetch Documentation我应该可以在Google Apps脚本中调用New Basecamp API。我怀疑我的困惑来自格式化的GAS错误(以及我刚开始这一切的事实)。我已经搜索了很久。这是我和错误,我回去从气:Google Apps脚本和外部API

mycode的气体:

function myFunction() { 
    var url = "https://basecamp.com/******/api/v1/projects.json"; 
    var headers = { 
       "contentType": "application/json", 
       "headers":{ "User-Agent": "MY_APP_NAME", 
          "username:password" : "user:pass"}, 
       "validateHttpsCertificates" :false 
       }; 

var response = UrlFetchApp.fetch(url, headers); 
var text = response.getResponseCode(); 
Logger.log(text); 
} 

GAS错误消息:

Request failed for https://basecamp.com/2166446/api/v1/projects.json returned code 401. 
Server response: HTTP Basic: Access denied. (line 9, file "Code") 

我希望这是一个合理的问题,谢谢寻求帮助。

正确的标题为HTTP Basic Authentication,这使得Utilities.base64Encode使用,如下:

"headers": { 
    "User-Agent": "MY_APP_NAME (App URL/your email address)", 
    "Authorization": "Basic " + Utilities.base64Encode(username + ":" + password) 
}, 
+0

惊人!谢谢!伟大的作品 – 2013-03-18 21:58:56

+0

有没有这方面的信息是我可以学习的网站? – 2013-03-18 22:04:52

+1

@ mat10112:信息遍布整个地方。我从原始发布的API链接开始,提到您可以使用HTTP基本身份验证。由于这比OAuth更易于使用,因此我去了*,仔细检查用于HTTP基本认证的确切标题。然后我检查了[App Script API](https://developers.google.com/apps-script/)文档页面,因为我知道他们有一些内置实用程序。然后我把它放在一起。 – 2013-03-18 22:11:31