У меня есть небольшой скрипт для извлечения информации из Trello API.
Сценарий отлично работает, когда я присваиваю полный URL-адрес строковой переменной. Однако, когда я передаю параметры отдельно, я получаю сообщение об ошибке «запрошено несанкционированное разрешение».
Рабочий код:
var url = "https://api.trello.com/1/boards/57c68c1beaab4c676adfaeb1/lists?key=myTrelloKey&token=myTrelloToken";
var response = UrlFetchApp.fetch(url);
Logger.log(response.getContentText());
Проблемный код:
var url = "https://api.trello.com/1/boards/57c68c1beaab4c676adfaeb1/lists";
var options =
{
"key": "myTrelloKey",
"token": "myTrelloToken",
"muteHttpExceptions" : true
};
var response = UrlFetchApp.fetch(url,options);
Logger.log(response.getContentText());
Я пытался понять, является ли это проблемой аутентификации, но не смог обойти ее. Я что-то не так делаю во второй версии? Заранее спасибо!
Я считаю, что ваша текущая ситуация и цель следующим образом.
Working code:
работает."key": "myTrelloKey"
и "token": "myTrelloToken"
в качестве параметра запроса.UrlFetchApp.fetch(url, params)
params
не имеет свойств key
и token
.
payload
, в этом случае запрос становится методом POST."key": "myTrelloKey"
и "token": "myTrelloToken"
в качестве параметра запроса, на текущем этапе необходимо подготовить скрипт.
key
и token
для тела запроса и заголовков вместо параметра запроса, к сожалению, это не удалось. Похоже, что они используются в качестве параметров запроса. РефКогда вышеуказанные пункты отражаются на вашем сценарии, он становится следующим.
function myFunction() {
// This is from https://gist.github.com/tanaikech/70503e0ea6998083fcb05c6d2a857107
String.prototype.addQuery = function(obj) {
return this + Object.keys(obj).reduce(function(p, e, i) {
return p + (i == 0 ? "?" : "&") +
(Array.isArray(obj[e]) ? obj[e].reduce(function(str, f, j) {
return str + e + " = " + encodeURIComponent(f) + (j != obj[e].length - 1 ? "&" : "")
},"") : e + " = " + encodeURIComponent(obj[e]));
},"");
}
var url = "https://api.trello.com/1/boards/57c68c1beaab4c676adfaeb1/lists";
var query = {
"key": "myTrelloKey",
"token": "myTrelloToken",
};
var endpoint = url.addQuery(query);
Logger.log(endpoint); // <--- https://api.trello.com/1/boards/57c68c1beaab4c676adfaeb1/lists?key=myTrelloKey&token=myTrelloToken
var response = UrlFetchApp.fetch(endpoint, {"muteHttpExceptions" : true});
Logger.log(response.getContentText());
}