Google脚本上需要身份验证的消息

时间:2020-04-07 10:31:03

标签: api google-apps-script cookies

因此,我正在尝试使用API​​使用Google脚本提取一些数据。

API文档告诉我这样做:

要进行身份验证:

POST /safefleet/api/authenticate HTTP/1.1
Host: api.safefleet.eu
Content-Type: application/json
{"username": "test", "password": "1234"}

然后我得到的响应是正确的,因为我得到了:

HTTP/1.1 200 OK
Content-Type: application/json
Set-Cookie: sessionid=4ce508d20832d12a64fd49ecb336a7b6
{"message": "ok"}

之后,我想获取所需的数据,并告诉我要这样做:

GET /safefleet/api/vehicles HTTP/1.1
Host: api.safefleet.eu
Cookie: sessionid=4ce508d20832d12a64fd49ecb336a7b6

我应该得到的答案应该像这样:

HTTP/1.1 200 OK
Content-Type: application/json
[
    {"vehicle_id": 1234, "name": "Vehicle A", ...},
    {"vehicle_id": 2345, "name": "Vehicle B", ...}
    ...
]

但是我却收到“需要身份验证” ...

这是代码:

function Vehicles() {


  var LogIn = UrlFetchApp.fetch("https://alpha.safefleet.eu/safefleet/api/authenticate/?username=test&password=123");

  Logger.log(LogIn.getHeaders()["Set-Cookie"]);

  var s = LogIn.getHeaders()["Set-Cookie"];

  var sessionid = JSON.stringify(s);

  var cookie = {
    "Cookie" : sessionid
  };
   var headers = {
    "Cookie": cookie
  };

  var params = {
    "method": "GET",
    "muteHttpExceptions": true,
    "headers": headers
  };

  var Vehicles = UrlFetchApp.fetch("https://alpha.safefleet.eu/safefleet/api/vehicles/", params);

  Logger.log(Vehicles);

}

1 个答案:

答案 0 :(得分:0)

尝试看看是否可行。

function Vehicles() {

  var payload = {
    "username": "test",
    "password": "123"
  };

  var options = {
    'method' : 'post',
    'muteHttpExceptions': true,
    'payload' : payload
  };

  var LogIn = UrlFetchApp.fetch("https://alpha.safefleet.eu/safefleet/api/authenticate", options);

  var cookie = LogIn.getHeaders()["Set-Cookie"];

  var headers = {
    "Cookie": cookie
  };

  var params = {
    "method": "GET",
    "muteHttpExceptions": true,
    "headers": headers
  };

  var Vehicles = UrlFetchApp.fetch("https://alpha.safefleet.eu/safefleet/api/vehicles/", params);
  Logger.log(Vehicles);
}