Twitter API 1.1 twitteroauth php 使い方
2013.07.20
この記事は最終更新日から1年以上が経過しています。
いやぁ。放置してた放置してた。と。
で、何やらTwitter周りが「変だぞ」と。
うーん。どうやらTwitter APIがバージョンアップしているみたいだ。。。
2013年6月12日より、v1.0 からv1.1になったみたいで、なにやら使いにくくなっているみたいですね。。
Twitter Developers REST API v1.1 Resources
https://dev.twitter.com/docs/api/1.1
その内容はというと、タイムラインの更新回数が大幅に制限されたり、XML、RSSが廃止され、JSONに統一されたりと、
OAuthでの認証が必須となってきたりと。。。
おぉ。。面倒臭い。。
そのおかげでフォロワー数の表示が出来ていなかったり、なんたりで影響を受けております。
とりあえず使えるようにと。ざっとまとめました。
Twitterアプリケーションの作成・登録
twitter developersにアクセスします。
twitter developers
ツイッターアカウントを入力。ログイン。
Create a new application のボタンを押す。
このような画面が出ますので、入力。
Application Details
- Name ・・・アプリケーション名称。日本語でも大丈夫です。
- Description ・・・アプリケーションについての説明
- Website ・・・ 作ってる組織のウェブサイト
この3項目入力は必須です。
入力し、同意規約にチェック。
認証コードが出ていますので、入力し「Create your Twitter application」ボタンを押す。
これで登録完了。
ページ右側から「My applications」の項目を選択。
Detaisのタブから「Consumer key」「Consumer secret」「Access token」等々が確認することができます。
これら「Consumer key」「Consumer secret」「Access token」を利用していきます。
PHP認証ライブラリ「twitteroauth」のダウンロード
ありがたい事に、OAuth認証用ライブラリ「twitteroauth」がGitHubにUPされていますので、GETしましょう。
自分の環境にクローン、または「Download ZIP」ボタンを押してzip形式でダウンロードしましょう。
アーカイブを展開して、中にある、
- twitteroauth/OAuth.php
- twitteroauth/twitteroauth.php
を利用します。
利用方法
では、まず、設定をしていきましょう。
twitteroauth / config.php
が設定ファイルとなりますので、エディタで開いて編集します。
define('CONSUMER_KEY', ''); define('CONSUMER_SECRET', ''); define('OAUTH_CALLBACK', 'http://example.com/twitteroauth/callback.php');
Twitter Developersで発行された「Consumer key」「Consumer secret」を入力します。
define('CONSUMER_KEY', 'Consumer keyを入力'); define('CONSUMER_SECRET', 'Consumer secretを入力'); define('OAUTH_CALLBACK', 'http://example.com/twitteroauth/callback.php');
入力完了しましたら、
twitteroauth / index.phpを開いてみましょう。
こんな感じで表示すればOKです。
ツィート一覧 表示
先ほど、config.phpで「Consumer key」「Consumer secret」を設定しましたが、
twetterのフィード情報を表示出来るように、access tokenを設定して情報を取得しましょう。
入力していくのは「Access token」と「Access token secret」となります。
config.phpを利用せず、以下の変数を定義していきます。
$consumer_key = ''; $consumer_secret = ''; $access_token = ''; $access_token_secret = '';
それぞれ、「Consumer key」「Consumer secret」「Access token」と「Access token secret」を入力。
続いて、オブジェクトを生成します。
$tw_obj = new TwitterOAuth ($consumer_key, $consumer_secret, $access_token, $access_token_secret); $tw_rest_api = 'https://api.twitter.com/1.1/statuses/home_timeline.json';
メソッドの指定とオプション設定
$request_method = 'GET'; $options = array ('count'=> 50);
タイムラインを取得します。
$tw_obj_request = $tw_obj->OAuthRequest ($tw_rest_api, $request_method, $options);
json形式で取得します。
$tw_obj_request_json = json_decode($tw_obj_request, true); $time_line_texts = '';
取得したデータをぶん回していき、先ほど作成した変数に代入。
foreach ($tw_obj_request_json as $key => $value) { $time_line_texts .= '<p>'.$value["text"].'</p>'; }
表示させたいところに、以下を記述。
<?php print($time_line_texts); ?>
すると、ドカーと表示します。
ユーザーステータス情報、フォロワー数等取得
先ほどは、ダーっとtweetを表示しました。
次は自分のステータス情報等を取得し、表示させたいと思います。
Twitter Developers REST API v1.1の日本語で記述されているドキュメントがありますので、こちらを参考にすると良いと思います。
【保存版】TwitterAPI1.1 REST API 全項目解説
http://dx.24-7.co.jp/twitterapi1-1-rest-api/
先程は
GET statuses/home_timeline:自分のホームタイムラインツイート一覧を取得
を使って、ツイート一覧を取得しました。
今回はusers/show を使ってフォロワー数の取得を行います。
$tw_rest_api = 'https://api.twitter.com/1.1/users/show.json'; $request_method = 'GET';
と変更し、以下の様に指定(screen_nameは任意のユーザー名を記述)
$request = $tw_obj->OAuthRequest($tw_rest_api, $request_method, array('cursor' => '-1', 'screen_name' => 'webcyou'));
print($request);
すると、指定ユーザーの情報がドカーと表示します。
これをjsonオブジェクト形式にデコードし、
$request = json_decode($request);
そこからフォロワー数であるfollowers_countを取得し表示。
print $request->{'followers_count'};
これで、指定ユーザーのフォロワー数を表示することができます。
いやぁ。ちょっと面倒くさくはなりましたが、色々と使っていきたい限りです。
フォロワー数取得まとめ
session_start(); require_once('twitteroauth/twitteroauth.php'); $consumer_key = ''; $consumer_secret = ''; $access_token = ''; $access_token_secret = ''; $tw_obj = new TwitterOAuth ($consumer_key, $consumer_secret, $access_token, $access_token_secret); $tw_rest_api = 'https://api.twitter.com/1.1/users/show.json'; $request_method = 'GET'; $request = $tw_obj->OAuthRequest($tw_rest_api, $request_method, array('cursor' => '-1', 'screen_name' => 'webcyou')); $request = json_decode($request);
<?php print $request->{'followers_count'}; ?>