Отправка в Tumblr с API php & Tumblr

Я пытаюсь автоматически публиковать сообщения в своем блоге Tumblr (который будет запускаться ежедневно через Cron)

Я использую официальную библиотеку PHP Tumblr здесь: https://github.com/tumblr/tumblr.php

И используя описанный здесь метод проверки подлинности: https://github.com/tumblr/tumblr.php/wiki/Authentication (или части этого, поскольку мне не нужен пользовательский ввод!)

У меня есть код ниже

require_once('vendor/autoload.php');

// some variables that will be pretttty useful
$consumerKey = 'MY-CONSUMER-KEY';
$consumerSecret = 'MY-CONSUMER-SECRET';
$client = new Tumblr\API\Client($consumerKey, $consumerSecret);
$requestHandler = $client->getRequestHandler();
$blogName = 'MY-BLOG-NAME';
$requestHandler->setBaseUrl('https://www.tumblr.com/');

// start the old gal up
$resp = $requestHandler->request('POST', 'oauth/request_token', array());

// get the oauth_token
$out = $result = $resp->body;
$data = array();
parse_str($out, $data);

// set the token
$client->setToken($data['oauth_token'], $data['oauth_token_secret']);

// change the baseURL so that we can use the desired Methods
$client->getRequestHandler()->setBaseUrl('http://api.tumblr.com');

// build the $postData into an array
$postData = array('title' => 'test title', 'body' => 'test body');

// call the creatPost function to post the $postData
$client->createPost($blogName, $postData);

Однако это дает мне следующую ошибку:

Неустранимая ошибка: Невозможно использовать Tumblr\API\RequestException: [401]: Не Авторизованный бросок /home/// */vendor/tumblr/tumblr/lib/Tumblr/API/Client.php на линии 426

Я могу получать сообщения в блогах и другие данные с помощью (пример):

echo '<pre>';
print_r( $client->getBlogPosts($blogName, $options = null) );
echo '</pre>';

Итак, кажется, что это просто сообщение, которое я не могу справиться.

Честно говоря, я действительно не понимаю аутентификацию oauth, поэтому я использую код, который более достойные кодировщики любезно предоставили бесплатно:-) Я предполагаю, что я в порядке, чтобы отредактировать части https://github.com/tumblr/tumblr.php/wiki/Authentication, так как мне не нужен пользовательский ввод, так как это будет просто запуск кода прямо с моего сервера (через Cron)

Я потратил дни, оглядываясь по интернету за некоторыми ответами (получил немного дальше), но я полностью застрял на этом...

Любые советы очень ценятся!

Ответ 1

Похоже, что части, которые вы удалили в коде, относились к той части процесса OAuth, которая была необходима для желаемого действия.

// exchange the verifier for the keys

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

Ответ 2

function upload_content(){
// Authorization info
$tumblr_email    = '[email protected]';
$tumblr_password = 'secret';
// Data for new record
$post_type  = 'text';
$post_title = 'Host';
$post_body  = 'This is the body of the host.';
// Prepare POST request
$request_data = http_build_query(
    array(
        'email'     => $tumblr_email,
        'password'  => $tumblr_password,
        'type'      => $post_type,
        'title'     => $post_title,
        'body'      => $post_body,
        'generator' => 'API example'
    )
);
// Send the POST request (with cURL)
$c = curl_init('api.tumblr.com/v2/blog/gurjotsinghmaan.tumblr.com/post');  
//api.tumblr.com/v2/blog/{base-hostname}/post       
//http://www.tumblr.com/api/write       
//http://api.tumblr.com/v2/blog/{base-hostname}/posts/text?api_key={}
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS, $request_data);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($c);
$status = curl_getinfo($c, CURLINFO_HTTP_CODE);
curl_close($c);
// Check for success
if ($status == 201) {
    echo "Success! The new post ID is $result.\n";
} else if ($status == 403) {
    echo 'Bad email or password';
} else {
    echo "Error: $result\n";
}

}

https://howtodofor.com/how-to-delete-tumblr-account/