1

我正在尝试按照该示例访问 Google Apps 脚本中 的Pingdom API : https ://developers.google.com/apps-script/external_apis

query = 'credits';
var username = 'foo';
var password = 'bar';
var credentials = username+':'+password;
var url = 'https://'+credentials+'@api.pingdom.com/api/2.0/'+encodeURIComponent(query);
var headers = {
  "App-Key": "abcd",
};
var options = {
    "method": "get",
    "headers": headers,
    'validateHttpsCertificates':false
};
Logger.log(url);
var response = UrlFetchApp.fetch(url);

代码执行中断并出现以下错误:

意外错误:https://foo:bar@api.pingdom.com/api/2.0/credits (第 17 行,文件“代码”)关闭

如果我将上述 URL 复制/粘贴到浏览器中,它就可以工作(即,我从 pingdom API 获得“缺少应用程序密钥”,它确认正确提供的用户名和密码,否则您会收到 Invalid Credentials 错误)。我尝试了打开和不encodeURIComponent打开credentials,我得到了同样的错误。'muteHttpExceptions':true也无济于事。

知道什么可能导致错误吗?

4

2 回答 2

5

似乎在 URL 中包含登录信息会导致 UrlFetchApp 出现错误。请在我们的问题跟踪器中提交错误。同时,将登录信息放在 Authorization 标头中,它应该可以正常工作。

var response = UrlFetchApp.fetch(url, {
  headers: {
    'Authorization': 'Basic ' + Utilities.base64Encode(username + ':' + password)
  }
});
于 2013-06-05T00:13:01.983 回答
0

我在尝试访问 Google Apps 脚本中的 Gitlab API 时遇到了类似的问题。如接受的答案中所述,在 URL 中包含登录信息会导致错误。接受的答案中的基本授权方法在 Google Apps 脚本中也不适用于我。将授权标头修改为“Bearer”类型就可以了。

var url = "https://gitlab.com/api/v4/projects/" + projectId;
var options = {
  'headers' : {Authorization: 'Bearer ' + token}
};
var response = UrlFetchApp.fetch(url, options);
于 2021-12-08T12:02:04.713 回答