Я пытаюсь опубликовать сообщение на Tumblr с помощью Google Apps Script. Я узнал, что Tumblr использует OAuth V1. Чтобы получить представление и протестировать API, я скопировал образец кода GSuiteDevs Apps OAuth1 Twitter, доступный на Github .
, который я соответствующим образом модифицировал, когда это необходимо. После запуска сценария я получаю сообщение об ошибке 400.8001
, которое согласно Документации Tumblr API связано с
", когда параметр NPF JSON недопустим или является неправильным format ".
Код и ошибка приведены ниже:
var CONSUMER_KEY = 'XXXVQoZ0kLUYB7GDHzJZcXXXXXXXXXXXXXXXXXXXXXXXX';
var CONSUMER_SECRET = 'XXXXlLVQS2z3WpXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
/**
* Authorizes and makes a request to the Tumblr API.
*/
function run() {
var service = getService();
if (service.hasAccess()) {
var url = 'https://api.tumblr.com/v2/blog/{MY BLOG IDENTIFIER COMES HERE}.tumblr.com/posts';
var payload = {
"content": [
{
"type": "text",
"text": "Hello world!"
}
]
};
var response = service.fetch(url, {
method: 'post',
payload: payload
});
var result = JSON.parse(response.getContentText());
Logger.log(JSON.stringify(result, null, 2));
} else {
var authorizationUrl = service.authorize();
Logger.log('Open the following URL and re-run the script: %s',
authorizationUrl);
}
}
/**
* Reset the authorization state, so that it can be re-tested.
*/
function reset() {
var service = getService();
service.reset();
}
/**
* Configures the service.
*/
function getService() {
return OAuth1.createService('Tumblr')
// Set the endpoint URLs.
.setAccessTokenUrl('https://www.tumblr.com/oauth/access_token')
.setRequestTokenUrl('https://www.tumblr.com/oauth/request_token')
.setAuthorizationUrl('https://www.tumblr.com/oauth/authorize')
// Set the consumer key and secret.
.setConsumerKey(CONSUMER_KEY)
.setConsumerSecret(CONSUMER_SECRET)
// Set the name of the callback function in the script referenced
// above that should be invoked to complete the OAuth flow.
.setCallbackFunction('authCallback')
// Using a cache will reduce the need to read from
// the property store and may increase performance.
.setCache(CacheService.getUserCache())
// Set the property store where authorized tokens should be persisted.
.setPropertyStore(PropertiesService.getUserProperties());
}
/**
* Handles the OAuth callback.
*/
function authCallback(request) {
var service = getService();
var authorized = service.handleCallback(request);
if (authorized) {
return HtmlService.createHtmlOutput('Success!');
} else {
return HtmlService.createHtmlOutput('Denied');
}
}
Ошибка показана ниже:
Исключение: запрос не выполнен для https://api.tumblr.com возвращенный код 400. Усеченный ответ сервера: {"meta": {"status": 400, "msg": "Bad Request"}, "response": [], "errors": [{"title": "Неверный запрос", "код": 8001, "detail": "Публикация не удалась. Пожалуйста, попробуйте еще раз."}]} (используйте опцию muteHttpExceptions для проверки полного ответа) (строка 457, файл "Сервис" )
В чем проблема в коде?