API вызова с телом в скрипте Google Apps - PullRequest
0 голосов
/ 09 июля 2019

Я использую Google Apps Script для вызова внешнего API из LotLinx.Их API не использует OAuth или заголовки, но вместо этого использует тело.Единственные параметры, которые я должен включить в первоначальный запрос на вход, - это мое имя пользователя, пароль и метод «вход» (который не распознается GAS).Я могу вызвать API в Почтальон в разделе "Тело" со следующими данными:

{"method":"login","user":"username@gmail","pwd":"somepassword"}

В Почтальоне мне предоставляются эти опции при вызовеAPI:

enter image description here

Ответ таков:

{
    "method": "login",
    "status": "success",
    "token": "some_token",
    "account": "..."
}

Оттуда я могу взять токен и сделатьотдельный запрос с другой конечной точкой, например, так:

 {
  "token": "TOK:some token",
  "method": "summaryReport",
  "timeperiod": "201906"
 }

Я пытаюсь теперь перевести это в мой скрипт скриптов.Я пробовал этот метод здесь , а также с использованием библиотеки OAuth2.Ни один из этих способов не работает и не возвращает эту ошибку 500:

java.lang.ClassCastException: com.google.gson.JsonNull нельзя преобразовать в com.google.gson.JsonObject

Мой сценарий приложений в настоящее время выглядит следующим образом:

  var loginUrl = 'https://turnapi-production.lotlinx.com/account.jsp?token=';
  var user = 'username';
  var pwd = 'password';

  var body = {
    method: "GET",
    endpoint: loginUrl,
    "user": user,
    "pwd": pwd,
    data: "{\"method\":\"login\",\"user\":\"username\",\"pwd\":\"password\"}",
    muteHttpExceptions: true
  };

  var response = UrlFetchApp.fetch(loginUrl, body);

Я не уверен, что еще я могу попытаться войти в систему и получить свой токен с помощью сценария приложений, а не почтальона, и я открыт для любых новых идей.Второй запрос API, который использует маркер доступа и извлекает нужные мне данные, использует метод POST.

...