Laravel 4.2 と tumblr.php (The official PHP client for the Tumblr API) を使って tumblr のダッシュボードを取得したときのメモです。
OAuth 認証も含めた動作確認可能な tumblr.php のサンプルコードが見当たらなかったので自作してみました。
動作環境
Windows7 64bit
XAMPP 1.8.2
tumblr.php のインストール
Laravel をインストールした環境の composer.json に tumblr のパッケージを追加します。
"require": { "laravel/framework": "4.2.*", "tumblr/tumblr": "dev-master" },
composer update でインストールします。
$ composer update
アプリの登録と consumer key, consumer secret 取得
下記サイトからアプリの登録を行います。
OAuth 認証で使用する consumer key, consumer secret もここで確認できます。
http://www.tumblr.com/oauth/apps
Default callback URL の登録
アプリケーションを登録したら、"Edit your Application" の画面で以下のようにコールバックURLを登録します。
下記のサンプルコードをそのまま動作させるときは "http://****/blog" と指定して下さい。
テストで動作確認するだけであれば、画像のように localhost の URL でも大丈夫です。
ソースコード
tumblr のダッシュボード取得のサンプルコードです。
consumerKey, consumerSecret は自分で取得したものに置き換えて下さい。
app/controllers/BlogController.php
<?php class BlogController extends BaseController { const consumerKey = 'Your Consumer Key'; const consumerSecret = 'Your Consumer Secret'; public function getIndex() { $param = Input::get(); if( array_key_exists('oauth_verifier', $param) ) { $client = new Tumblr\API\Client( self::consumerKey, self::consumerSecret ); $requestHandler = $client->getRequestHandler(); $requestHandler->setBaseUrl('https://www.tumblr.com/'); $client->setToken($param['oauth_token'], Session::get('oauth_token_secret')); // get access token $resp = $requestHandler->request('POST', 'oauth/access_token', array('oauth_verifier' => $param['oauth_verifier'])); $out = $result = $resp->body; $data = array(); parse_str($out, $data); // tell the user where to go $client->setToken($data['oauth_token'], $data['oauth_token_secret']); // get dashboard $client->getRequestHandler()->setBaseUrl('http://api.tumblr.com'); dd( $client->getDashboardPosts() ); } else { // デバッグとして GET パラメータの内容を表示する dd($param); } } public function getInfo() { $client = new Tumblr\API\Client( self::consumerKey, self::consumerSecret ); $requestHandler = $client->getRequestHandler(); $requestHandler->setBaseUrl('https://www.tumblr.com/'); // リクエストトークン要求 $resp = $requestHandler->request('POST', 'oauth/request_token', array()); // レスポンスから oauth token を取得 $out = $result = $resp->body; $data = array(); parse_str($out, $data); // コールバック先で使用するため、セッションに保存 Session::put('oauth_token_secret', $data['oauth_token_secret']); // oauth_verifier 要求 return Redirect::to('https://www.tumblr.com/oauth/authorize?oauth_token='.$data['oauth_token']); } }
app/routes.php に以下を追加します。
Route::controller('blog', 'BlogController');
動作確認
xampp-controller から Apache を起動します。
Webブラウザで http://localhost/blog/info を開くとダッシュボードの内容が表示されます。