composerでTwitterのoauthライブラリを利用しタイムラインを取得する
Twitter APIを使って、あれこれ条件を指定してタイムラインを取得するためには、いくつかの準備が必要です。
- TwitterのDeveloper Accountを登録する
- アプリを作成してAPIキーを取得する
- サーバーにcomposerをインストールする
- 「abraham/twitteroauth」ライブラリを導入する
- APIキーとoauthライブラリを使ってタイムラインを取得するphpコードを作成する
- WordPressで、そのphpコードを表示できるようにする
1.TwitterのDeveloper Accountを登録する
「TwitterのDeveloper account登録をしてみる」を参照のこと。
2.アプリを作成してAPIキーを取得する
こちらのページなどを参考に、アプリケーションを作成します。英文で申請しなければならない(短文ですが)ので、例文も参考にしてください。
私の場合、アプリを使ってログインしたりTwitterに投稿したり、ということはせず、あくまでタイムラインを取得するだけなので、アプリケーションのAccess permissionは「Read-only」にしました。
アプリ作成後に「Keys and tokens」タブをクリックすると、Consumer API keys (Consumer Key & Consumer Secret)とAccess token & access token secretが取得できます。
3.サーバーにcomposerをインストールする
さくらサーバーにcomposerをインストールするには、こちらを参考にしました。
4.Oauthライブラリの導入
サーバーにSSH接続して、ライブラリをインストールしたいディレクトリに移動したあと、以下のコマンドを実行します。composerをインストールしたディレクトリと異なる場合には、「/home/アカウント/composer.phar」みたいにcomposerまでのパスを書いてやればいいと思います。
php composer.phar require abraham/twitteroauth
5.phpコードの作成
以下のようなコードを作成してみます。
<?php // TwitterOAuthライブラリを読み込み require 'vendor/autoload.php'; // TwitterOAuthクラスをインポート use Abraham\TwitterOAuth\TwitterOAuth; //Developer Accountで作成したアプリのAPIキーを代入 $consumer_key = '***************'; $consumer_secret = '***************'; $access_token = '***************'; $access_token_secret = '***************'; // TwitterOAuthクラスのインスタンスを作成 $connection = new TwitterOAuth( $consumer_key, $consumer_secret, $access_token, $access_token_secret ); // ユーザータイムラインを取得するためのオプション $options = [ 'screen_name'=>'**********', //表示させるユーザーアカウント 'count'=>'15', //取得するtweetの数 'exclude_replies'=>'true', //リプライを除外する 'include_entities'=>'true', //画像のurl等を含める ]; $tweets = $connection -> get('statuses/user_timeline',$options); ?>
これで、指定したユーザーのタイムラインの情報が取れます。foreachで回して、表示したい情報を取り出していけばOKです。
<?php foreach($tweets as $value): $prof_image = $value -> user -> profile_image_url_https;// プロフィール画像のURL $createdAt = $value -> created_at;// 投稿時刻 $media_url = $value -> entities-> media[0] -> media_url_https; // 添付画像のURL $user_id = $value -> user -> screen_name; $text = $value -> text; // 投稿本文($tweet_mode=expandedにしている場合はfull_text) ?> //ここに表示させたい内容を書いていく <?php endforeach;?>
実際の作成例はこちらです。
さまざまなオプションや取り出せるデータはこちらを参照してください。