UrlFetchApp.fetch API "Request contains invalid authentication headers"(cURL 有效)

UrlFetchApp.fetch API "Request contains invalid authentication headers" (cURL works)

使用 PHP 和 cURL 可以发出 API 请求,但我无法使用 UrlFetchApp

在 Google Apps 脚本中使用它

工作PHP代码:

$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-type: ".$contenttype, "X-BOL-Date:" .$date, "X-BOL-Authorization: ".$signature));
curl_setopt($ch, CURLOPT_URL, $url.$uri);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PORT, $port);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
if(curl_errno($ch))
{
print_r(curl_errno($ch), true);
}
$result = curl_exec($ch);
curl_close($ch); 

现在我在 Google 应用程序中创建的版本:

var options = 

   { 

     "method": "GET",
     "content-Type": contenttype,
     "X-BOL-Date": date,
     "X-BOL-Authorization": signature,
     "muteHttpExceptions": true,
  };


var response = UrlFetchApp.fetch(url+uri, options);

// Check return code embedded in response.
var rc = response.getResponseCode();
var responseText = response.getContentText();
if (rc !== 200) {
// Log HTTP Error
Logger.log("Response (%s) %s",
         rc,
         responseText );
}
else {
// Successful GET, handle response normally
Logger.log( responseText );
}

使用它会引发 "Request contains invalid authentication headers" 错误。 根据文档可能的原因:

"One of the mandatory request headers is missing or date header is not between +/- 15 minutes of the server time in GMT."

header 中使用的值(格林威治标准时间日期,签名)与 PHP 中的输出相同。据我所知,其他所有内容也相同。

所以显然 UrlFetchApp 不会发送与 cURL 完全相同的 headers。

如果X-BOL-DateX-BOL-Authorization需要包含在header中,请尝试以下修改。

发件人:

var options = { 
    "method": "GET",
    "content-Type": contenttype,
    "X-BOL-Date": date,
    "X-BOL-Authorization": signature,
    "muteHttpExceptions": true,
};

收件人:

var options = {
    method: "get",
    headers: {
        "Content-Type": contenttype,
        "X-BOL-Date": date,
        "X-BOL-Authorization": signature,
    },
    muteHttpExceptions: true,
};

我不知道这是否有效,因为我不能 运行 这个。所以,如果这不起作用,我很抱歉。