TwistOAuthは現在非推奨になっています。代わりに同じ作者のcowitterを使うようにしてください。
#はじめに
PHPでTwitter連携のアプリをつくろうと思って調べてみるとTwistOAuthっていうのが便利そうだった。とりあえずこれを使ってタイムラインを取得出来るだけ取得してみる。
TwistOAuthは以下のURLで公開されてます。
https://github.com/mpyw/TwistOAuth
#実装する
##準備
あらかじめ、https://apps.twitter.com/からアプリケーション登録して、
- CONSUMER KEY
- CONSUMER SECRET
- ACCESS TOKEN
- ACCESS TOKEN SECRET
の4つを取得しておく。方法は色んなとこに載ってるので省略。
TwistOAuthライブラリはpharアーカイブにまとまってるのでダウンロード
wget https://github.com/mpyw/TwistOAuth/raw/master/build/TwistOAuth.phar
##コード
###ライブラリを読み込む
各種キーの設定もしてしまう
<?php
require_once 'TwistOAuth.phar';
define('CONSUMER_KEY', '取得したキー');
define('CONSUMER_SECRET', '取得したキー');
define('ACCESS_TOKEN', '取得したキー');
define('ACCESS_TOKEN_SECRET', '取得したキー');
$screen_name = '取得したいユーザのID(@なし)';
###認証しよう
TwistOAuthクラスのコンストラクタで認証が行われるので。キーを渡してあげる。
try {
$to = new TwistOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);//OAuth認証
} catch(TwistException $e) {
$error = $e->getMessage();
}
###ついーと取得
tweetはstatusと呼ぶそうです。一回のリクエストで最大200件しか取得できないので、forで回して取得できる最大数の3200件取得してみる。
$statuses = array(); //すべてのツイート用の配列
for($i = 0; $i < 3200; $i += 200) {
$param = array('screen_name' => $screen_name, 'count' => '200'); //200件取得
if(isset($max_id)) {
$param['max_id'] = $max_id;
}
try {
$tmp_statuses = $to->get('statuses/user_timeline', $param);
} catch (TwistException $e) {
$error = $e->getMessage();
}
if(count($tmp_statuses) == 0) { //取得件数0だったら終了
break;
} else { //取得したツイートがあった時
$statuses = array_merge($statuses, $tmp_statuses); //配列の最後に追加
$max_id = $tmp_statuses[count($tmp_statuses)-1]->id - 1; //取得した最古のツイートのidを保存
}
}
?>
これで$statuses
には最大3200件(あれば)のツイートの配列が入ります。
###表示
とりあえずリストで表示してみる
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title><?php echo htmlspecialchars($statuses[0]->user->name); ?>'s timeline</title>
</head>
<body>
<?php if(isset($error)): echo $error; ?>
<?php else: ?>
<ul>
<?php foreach ($statuses as $status): ?>
<li><?php echo htmlspecialchars($status->text); ?> </li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</body>
</html>
#おわりに
アクセストークンが自分のものなので、基本的に鍵アカのツイートは取得できない。取得するには各ユーザにOAuth認証してもらう必要がある。