【问题标题】:Google App Script UrlFetchApp.fetch API Key Header: getting 401 errorGoogle App Script UrlFetchApp.fetch API Key Header:出现 401 错误
【发布时间】:2020-12-08 11:19:00
【问题描述】:

我有一个 Infobip 测试帐户,我正在尝试使用他们的 API 向用户发送消息。作为一种授权类型,我使用的是 API Key Header。我相信我不知道将这个密钥放在代码上的哪个位置。我正在尝试使用标头上的密钥,但总是收到错误 401。我知道我没有根据文档使用正确的有效负载参数,但无论如何,我相信这不是产生此错误的原因。

function myFunction_infobip() {
 
  var url = "https://*base URL given*.api.infobip.com/omni/1/advanced";
  var authHeader = '';
  var payload = JSON.stringify({
  "scenarioKey":"AD9E01A5DC7BEE2C2B828D208182A611",
  "whatsApp":{"text":"test."},});
 
  var headers = {
        "Authorization": "App <API key given>",
        "Content-Type": "application/json",
        "Accept": "application/json"};
 
  var options = {
    "method": "POST",
    "contentType": "application/json",
    "headers": headers,
    "payload": payload
  };
 
  var response = UrlFetchApp.fetch(url, options);
  Logger.log("response: "+response);
}

如果有任何建议/线索,我将不胜感激!

【问题讨论】:

  • 我不确定,但基于the official docs,我想说您必须在授权标头的API密钥之前附加字符串App,例如"Authorization": "App " + API_KEY。你能检查一下这是否能解决你的问题吗?在这种情况下,我会考虑将其发布为答案。
  • 嗨@Iamblichus,非常感谢您的评论。我忘记将代码放在“App”部分上方,但是当我收到此错误时,我已经在运行代码了。但很高兴你注意到了,我已经在这里编辑了代码。我不知道是什么导致了这个错误。我应该编辑清单文件吗?我迷路了
  • I believe this is not the reason to generate this error. 为什么不呢?其他一切似乎都井井有条。我猜服务器不允许访问资源,因为您无权访问请求的资源
  • @TheMaster 我认为一个错误会导致“错误请求”错误而不是“未经授权”错误,但我会尝试一下,看看是不是这样
  • @TheMaster Bad request would be thrown if there are syntax errors in your -> 确切地说,这里的情况是什么,它们的语法错误。我更改了正确语法的参数,但我仍然认为是 401 错误。但是,我已经能够得到它。我将 URL 放在工资单中,现在它运行良好。我将在那里发布解决方案。感谢您的帮助!

标签: google-apps-script api-key http-status-code-401 urlfetch unauthorized


【解决方案1】:

OP 的答案从问题移到了:


对于那些有同样问题的人,经过多次尝试,我找到了解决方案。我刚刚在有效负载中添加了 URL,它现在可以正常工作了:

function myFunction_infobip() {
 
  var url = "https://*base URL given*.api.infobip.com/omni/1/advanced";
  var authHeader = '';
  var payload = JSON.stringify({
  "url": "https://*base URL given*.api.infobip.com/omni/1/advanced",
  "scenarioKey":"AD9E01A5DC7BEE2C2B828D208182A611",
  "WhatsApp":<insert here the parameters>);
 
  var headers = {
        "Authorization": "App <API key given>",
        "Content-Type": "application/json",
        "Accept": "application/json"};
 
  var options = {
    "method": "POST",
    "contentType": "application/json",
    "headers": headers,
    "payload": payload
  };
 
  var response = UrlFetchApp.fetch(url, options);
  Logger.log("response: "+response);
}

【讨论】:

    猜你喜欢
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 2018-10-01
    • 2019-03-29
    相关资源
    最近更新 更多