Я использую Google Apps Script для вызова внешнего API из LotLinx.Их API не использует OAuth или заголовки, но вместо этого использует тело.Единственные параметры, которые я должен включить в первоначальный запрос на вход, - это мое имя пользователя, пароль и метод «вход» (который не распознается GAS).Я могу вызвать API в Почтальон в разделе "Тело" со следующими данными:
{"method":"login","user":"username@gmail","pwd":"somepassword"}
В Почтальоне мне предоставляются эти опции при вызовеAPI:
Ответ таков:
{
"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.