Twitter APIをPHPで操作して、任意のユーザのツイート(タイムライン)を収集する方法について解説していきます。
この記事ではTwitter APIの登録が終わっていて、APIキーが取得できていることを前提に書いていますので、ご了承ください。
OAuthに接続するためのライブラリをダウンロード
OAuthへの接続は1からやると大変なので、ライブラリを使わせていただきます。
以下のライブラリをダウンロードしましょう。
themattharris/tmhOAuth
An OAuth 1.0A library written in PHP. Contribute to themattharris/tmhOAuth development by creating an account on GitHub.
ちなみに動作環境は次のようになります。
- PHP Version 5.3以上
- cURL support enabledである
これらの動作環境は phpinfo();関数で確認することができます。
OAuthライブラリの設置
先ほどダウンロードしたフォルダの中に tmhOAuth.php というファイルがあります。
これを任意の位置に配置しましょう。
次にuserTimeline.php というファイルを作成して、これをtmhOAuth.phpと同じ階層に配置します。
例は以下のようになります。
https://△△.com/code/twitter/tmhOAuth.php https://△△.com/code/twitter/userTimeline.php
OAuthへ接続する方法
以下のようなコードを書きます。
<<!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="utf-8"> <title>Twitter get user timeline</title> </head> <body> <h1>Twitter get user timeline</h1> <?php require_once("./tmhOAuth.php"); $sConsumerKey = "***********************"; $sConsumerSecret = "**********************************************"; $sAccessToken = "**********************************************"; $sAccessTokenSecret = "**********************************************"; $twObj = new tmhOauth( array( "consumer_key" => $sConsumerKey, "consumer_secret" => $sConsumerSecret, "token" => $sAccessToken, "secret" => $sAccessTokenSecret, "curl_ssl_verifypeer" => false, ) ); $code = $twObj->request( 'GET', "https://api.twitter.com/1.1/statuses/user_timeline.json",array("count"=>"10","screen_name"=>"対象ユーザーのスクリーンネーム")); $aResData = json_decode($twObj->response["response"], true); if(isset($aResData['errors']) && $aResData['errors'] != ''){ ?> 取得に失敗しました。エラー内容は以下になります<br/> <pre> <?php var_dump($aResData); ?> </pre> <?php }else{ $iCount = sizeof($aResData); for($iTweet = 0; $iTweet<$iCount; $iTweet++){ $sText= $aResData[$iTweet]['text']; $sName= $aResData[$iTweet]['user']['name']; $sScreenName= $aResData[$iTweet]['user']['screen_name']; $sProfileImageUrl = $aResData[$iTweet]['user']['profile_image_url']; $sCreatedAt = $aResData[$iTweet]['created_at']; $sStrtotime= strtotime($sCreatedAt); $sCreatedAt = date('Y-m-d H:i:s', $sStrtotime); ?> <hr/> <h3><?php echo $sName; ?>さんのツイート</h3> <ul> <li>スクリーンネーム: <?php echo $sScreenName; ?></li> <li>プロフィール画像: <img src="<?php echo $sProfileImageUrl; ?>" /></li> <li>つぶやき: <?php echo $sText; ?></li> <li>ツイート時間: <?php echo $sCreatedAt; ?></li> </ul> <?php } } ?> </body> </html>
区切って要点を解説していきます。
APIキーの挿入
$sConsumerKey = "***********************"; $sConsumerSecret = "**********************************************"; $sAccessToken = "**********************************************"; $sAccessTokenSecret = "**********************************************";
上記の******にAPIキーを挿入します。
上から順に
- Consumer key
- Consumer secret
- Access Token
- Access Token Secret
の値を挿入しましょう。
OAuthオブジェクトの生成
$twObj = new tmhOauth( array( "consumer_key" => $sConsumerKey, "consumer_secret" => $sConsumerSecret, "token" => $sAccessToken, "secret" => $sAccessTokenSecret, "curl_ssl_verifypeer" => false, ) );
上記のプログラムでOAuthオブジェクトを生成しています。
ユーザータイムラインの取得
$code = $twObj->request( 'GET', "https://api.twitter.com/1.1/statuses/user_timeline.json",array("count"=>"10","screen_name"=>"対象ユーザーのスクリーンネーム"));
一番大切なコードになります。
ユーザータイムラインを取得するためのメソッドになります。
GET statuses/user_timeline – ユーザータイムラインを取得するの解説が非常に分かりやすいので、参考にしてみてください。
ユーザータイムラインの出力
for($iTweet = 0; $iTweet<$iCount; $iTweet++){ $sText= $aResData[$iTweet]['text']; $sName= $aResData[$iTweet]['user']['name']; $sScreenName= $aResData[$iTweet]['user']['screen_name']; $sProfileImageUrl = $aResData[$iTweet]['user']['profile_image_url']; $sCreatedAt = $aResData[$iTweet]['created_at']; $sStrtotime= strtotime($sCreatedAt); $sCreatedAt = date('Y-m-d H:i:s', $sStrtotime); ?> <hr/> <h3><?php echo $sName; ?>さんのつぶやき</h3> <ul> <li>スクリーンネーム: <?php echo $sScreenName; ?></li> <li>プロフィール画像: <img src="<?php echo $sProfileImageUrl; ?>" /></li> <li>つぶやき: <?php echo $sText; ?></li> <li>ツイート時間: <?php echo $sCreatedAt; ?></li> </ul>
必要なユーザオブジェクトを取得し、そのあと出力しています。
ユーザオブジェクトの説明と取得できるものはUser Object(ユーザーオブジェクト)の説明に分かりやすくまとめられています。
今回は以上になります。
最後まで見てくださってありがとうございました。