twitter API について検索しているとJSでの取得方法もちらほら見られるけれど、twitter API ver.1.1から認証が必須となったことで、JSだとアクセストークンがまる見えになってしまう。これは危険。
ということで、PHPでの実装手順。
#アプリケーションの登録
twitter API を使ってつぶやきを取得したり投稿したりするために、はじめに絶対必要。
詳しくは以下のサイトを参考に。
「twitter アプリケーション登録」で参考サイトがいっぱい出てくる。
・Twitter APIで、アプリケーションを登録する方法
↓ 完了するとこれが取得できる
consumer_key
consumer_secret
#アクセストークンの取得
詳しくは以下のサイトを参考に。
・Twitter APIでアクセストークンを取得する方法
↓ 完了するとこれが取得できる
access_token
access_token_secret
#OAuth用ライブラリ「twistoauth」
Oauth認証用ライブラリの中では一番メジャーっぽい「twitteroauth」を使おうとしたらOauth認証通すまでにちょっとハマってしまい...
twitteroauthを元に改良した人がいたので、そちらのライブラリ「twistoauth」を使ってみた。
⇒ 「twitteroauth」の使い方も備忘録としてこちらに記載
まずはライブラリをダウンロード。
twistoauth GitHub
ダウンロードしたファイルの中で使うのは TwistOAuth.phar のみ。
##twistoauth を使って認証する
まずはtwistoauth の読み込み
require 'TwistOAuth.phar';
上の手順で取得したAPIキー、アクセストークンを設定して認証を通す。
$consumer_key = 'xxxxxxxxxxx';
$consumer_secret = 'xxxxxxxxxxx';
$access_token = 'xxxxxxxxxxx';
$access_token_secret = 'xxxxxxxxxxx';
$connection = new TwistOAuth($consumer_key, $consumer_secret, $access_token, $access_token_secret);
##jsonの取得
REST APIsを参照すれば、いろんなツイートを取得できる。パラメータもいろいろ。
// キーワードによるツイート検索
$tweets_params = ['q' => '夜景,きれい OR キレイ OR 綺麗' ,'count' => '10'];
$tweets = $connection->get('search/tweets', $tweets_params)->statuses;
// ハッシュタグによるツイート検索
$hash_params = ['q' => '#html5,#css3' ,'count' => '10', 'lang'=>'ja'];
$hash = $connection->get('search/tweets', $hash_params)->statuses;
// 指定位置(geo情報)から投稿されたツイート検索
$geo_params = ['geocode' => '35.710063,139.8107,0.2km' ,'count' => '10'];
$geo = $connection->get('search/tweets', $geo_params)->statuses;
// 自分のタイムラインを取得
$home_params = ['count' => '10'];
$home = $connection->get('statuses/home_timeline', $home_params);
// 自分のツイートを取得
$user_params = ['count' => '10'];
$user = $connection->get('statuses/user_timeline', $user_params);
// ニックネームからユーザ情報を取得
$users_params = ['screen_name' => 'yokoh9'];
$users = $connection->get('users/show', $users_params);
※PHP ver.5.3以下の場合は配列の省略記述 ['xxx' => 'xxx', ...] が使えないので、array('xxx' => 'xxx', ...) とする。
#JSONから表示する情報を抜き出す
キーワードやハッシュで検索したツイートでは、キーワードにマーキングをしたいのでその処理も含む。
foreach ($tweets as $value) {
$text = htmlspecialchars($value->text, ENT_QUOTES, 'UTF-8', false);
// 検索キーワードをマーキング
$keywords = preg_split('/,|\sOR\s/', $tweets_params['q']); //配列化
foreach ($keywords as $key) {
$text = str_ireplace($key, '<span class="keyword">'.$key.'</span>', $text);
}
// ツイート表示のHTML生成
disp_tweet($value, $text);
}
抜き出した情報をHTMLに流し込む。
function disp_tweet($value, $text){
$icon_url = $value->user->profile_image_url;
$screen_name = $value->user->screen_name;
$updated = date('Y/m/d H:i', strtotime($value->created_at));
$tweet_id = $value->id_str;
$url = 'https://twitter.com/' . $screen_name . '/status/' . $tweet_id;
echo '<div class="tweetbox">' . PHP_EOL;
echo '<div class="thumb">' . '<img alt="" src="' . $icon_url . '">' . '</div>' . PHP_EOL;
echo '<div class="meta"><a target="_blank" href="' . $url . '">' . $updated . '</a>' . '<br>@' . $screen_name .'</div>' . PHP_EOL;
echo '<div class="tweet">' . $text . '</div>' . PHP_EOL;
echo '</div>' . PHP_EOL;
}
おしまい。
以下はもう一つのライブラリ「twitteroauth」の場合
OAuth用ライブラリ「twitteroauth」の場合
まずはダウンロード。
twitteroauth · GitHub
twitteroauth ver.0.2.0 までの使い方は検索でいっぱい出てくるんだけど、現最新バージョンは ver.0.5.1。
0.2.1以降はcomposerからインストールするやり方に変わったらしい。
composerってなに? ⇒ PHPのパッケージ管理ツール
ということで、composerからインストールせねば。。
こちら「Composer に挑戦したよ深夜0時」を参考にさせていただいた。
##composerに関するメモ
##twitteroauthのインストール手順
- アプリのフォルダを作成
- 使いたいパッケージの定義ファイル(composer.json)を作成
- $ composer install のコマンド実行
- PHPのコーディング(autoloaderファイルの読み込み)
上記(2)の ↓ composer.jsonファイル(バージョンは最新にしてね)をアプリフォルダ内に入れる。
{
"require": {
"php": ">=5.4.0",
"abraham/twitteroauth": "0.5.0"
}
}
$ composer install
でインストール。
#twitteroauth を使って認証する
twitteroauthは無事インストール完了。
次は認証。
本家の英語サイト
https://twitteroauth.com/
日本語サイトでは ↓ こちらがけっこう丁寧に解説してくれている。
abraham/twitteroauthを使う
<?php
// twitteroauth の読み込み
require_once 'vendor/autoload.php';
use Abraham\TwitterOAuth\TwitterOAuth;
// OAuth認証
$consumer_key = 'xxxxxxxx';
$consumer_secret = 'xxxxxxxx';
$access_token = 'xxxxxxxx';
$access_token_secret = 'xxxxxxxx';
$connection = new TwitterOAuth($consumer_key, $consumer_secret, $access_token, $access_token_secret);
ここまでがOAuth認証を通すところ。
#ツイートを投稿したり取得したり
jsonの取得から表示までは twistoauth の場合とほぼ同じ。
// Timelineの取得
$home = $connection->get('statuses/home_timeline', array('count' => 5));
// キーワードによるツイート検索
$tweet = $connection->get("search/tweets", array("q" => "夜景 きれい", 'count' => 10));
// 認証が有効か+ユーザ情報取得
$user = $connection->get('account/verify_credentials');
// つぶやく
$status = $connection->post('statuses/update', ['status' =>'ツイート内容']);
// リツイート
$retweet = $connection->post('statuses/retweet/ツイートID');
// フォロワーを取得
$followers = $connection->get('followers/list');
// フォローしてる人を取得
$follows = $connection->get('friends/list');
// ユーザ名でユーザ情報を取得
$userinfo = $connection->get('users/show', ['screen_name'=> '@以降の表示名']);
// ユーザIDでフォローする
$follow = $connection->post('friendships/create', ['user_id'=> 'ユーザID']);