如果我没记错的话,按照UrlFetch Documentation,我应该可以从Google Apps脚本中调用New Basecamp API。我怀疑我的困惑来自格式错误的GAS(以及我刚刚开始的所有事实)。我已经用谷歌搜索了很长时间。这是我所拥有的,也是我从GAS返回的错误:
GAS中的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
header 如下:
"headers": {
"User-Agent": "MY_APP_NAME (App URL/your email address)",
"Authorization": "Basic " + Utilities.base64Encode(username + ":" + password)
},
关于api - Google Apps脚本和外部API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15487568/