Intereting Posts
Открыть изображение JPEG / PNG в фотошопе при загрузке с моего сайта Заполнение раскрывающегося списка PHP из базы данных MySQL Как сохранить 3 списка переключателей в базе данных mysql в одном столбце, в разных строках? Ошибка при использовании веб-службы:: SoapClient (): операция SSL завершилась неудачей с кодом 1 PHP-форму просто обновляет Как вы будете кэшировать контент в проекте MVC? MongoDB: запрос нескольких коллекций с двумя запросами? Php login хранит пароли в txt Размытие строки одним или несколькими пробелами или вкладками передача PHP-переменных через javascript windows.open на другую страницу PHP Activerecord-association: создать новый объект (найти класс) Как вы читаете из многомерного варианта массива, возвращаемого из COM-объекта в PHP? Как ограничить коэффициент загрузки изображения до 16: 9 в кодеригере? checkbox checkboxes PHP Как я могу перечислить те же данные ID с циклом while в PHP?

Как я могу получить access_token из официального php-клиента tumblr?

Я следил за указаниями, указанными в этом вопросе stackoverflow , но я застрял.

Я использую tumblr / tumblr.php из Github (официальный «PHP-клиент для tumblr API»).

Я также следую инструкциям здесь (которые на самом деле для twitter), но эти направления не предназначены для библиотеки git, которую я использую.

У меня есть действующий ключ пользователя и секрет.

Из них я делаю запрос и получаю oauth_token и oauth_token_secret так:

$client = new Tumblr\API\Client($consumerKey,$consumerSecret); $client->getRequestHandler()->setBaseUrl('https://www.tumblr.com/'); $req = $client->getRequestHandler()->request('POST', 'oauth/request_token', [ 'oauth_callback' => '...', ]); // Get the result $result = $req->body->__toString(); print_r( $result ); 

Что дает мне:

 oauth_token=2C6f...MqSF&oauth_token_secret=HaGh...IJLi&oauth_callback_confirmed=true 

Затем я отправляю пользователя на http://www.tumblr.com/oauth/authorize?oauth_token=2C6f…MqSF , чтобы они могли разрешить доступ для приложения. Это перенаправляется на: ...?oauth_token=2C6f...MqSF&oauth_verifier=nvjl...GtEa#_=_

И теперь, на последнем этапе, я считаю, что я должен преобразовать токен запроса в токен доступа. Это правильно? Я делаю что-то не так:

 $client = new Tumblr\API\Client($consumerKey,$consumerSecret); $client->getRequestHandler()->setBaseUrl('https://www.tumblr.com/'); $req = $client->getRequestHandler()->request('POST', 'oauth/access_token', [ 'oauth_token' => '2C6f...MqSF', 'oauth_verifier' => 'nvjl...GtEa' ]); // Get the result $result = $req->body->__toString(); print_r( $result ); 

потому что я получаю ответы вроде этого:

 oauth_signature [AqbbYs0XSZ7plqB0V3UQ6O6SCVI=] does not match expected value [0XwhYMWswlRWgcr6WeA7/RrwrhA=] 

Что случилось с моим последним шагом?

Я не уверен, должен ли я даже отправлять oauth_verifier с запросом. Предполагается, что #_=_ является частью oauth_verifier ? Я бы так не подумал. Я получаю ошибки подписи для всех вариантов Ive.

Без токена и токена. Я не могу совершать определенные вызовы API. Я получаю несанкционированные 403 ответа. То же самое, когда я использую токен и token_secret со второго шага. Я уверен, что мне нужна новая пара токенов / секретов.

Вы довольно близки, вы просто передаете oauth_token неправильно на последнем шаге и пропустите внедорожник oauth_token_secret.

Я скомпилировал этот рабочий код (который вы также можете найти в Wiki по адресу https://github.com/tumblr/tumblr.php/wiki/Authentication ):

 <?php require_once('vendor/autoload.php'); // some variables that will be pretttty useful $consumerKey = '<your consumer key>'; $consumerSecret = 'your consumer secret>'; $client = new Tumblr\API\Client($consumerKey, $consumerSecret); $requestHandler = $client->getRequestHandler(); $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); // tell the user where to go echo 'https://www.tumblr.com/oauth/authorize?oauth_token=' . $data['oauth_token']; $client->setToken($data['oauth_token'], $data['oauth_token_secret']); // get the verifier echo "\noauth_verifier: "; $handle = fopen('php://stdin', 'r'); $line = fgets($handle); // exchange the verifier for the keys $verifier = trim($line); $resp = $requestHandler->request('POST', 'oauth/access_token', array('oauth_verifier' => $verifier)); $out = $result = $resp->body; $data = array(); parse_str($out, $data); // and print out our new keys $token = $data['oauth_token']; $secret = $data['oauth_token_secret']; echo "\ntoken: " . $token . "\nsecret: " . $secret; // and prove we're in the money $client = new Tumblr\API\Client($consumerKey, $consumerSecret, $token, $secret); $info = $client->getUserInfo(); echo "\ncongrats " . $info->user->name . "!\n";