WNT-Technology-20130903
Technology

やってみると意外とカンタン!TwitterAPIを使ってつぶやきデータを取得してみた。

Develop

突然ですがみなさん、TwitterAPIを使ったことはありますか?

普段コードを書かない私ですが、「Twitterのデータを利用してなにか面白いことできたらいいな!」と思い、TwitterAPIの仕組みについて理解を深めるために、つぶやきデータの取得に挑戦してみました。

※この記事は2013年9月3日時点で執筆された記事です。現在では仕様が異なる可能性があります。


TwitterAPIって、そもそもなに?

Twitter社が提供しているサービスで、WebサイトやアプリなどからTwitterの機能を呼び出すことができ、
このAPIを利用することでツイートの参照や検索などを行なえるアプリケーション開発ができるようになります。

今年2013年6月11日(現地時間)に従来のver1.0から「Twitter API Version 1.1」に完全移行しました。


Twitter API Version1.1を使ってみよう!

【手順】

  1. アプリケーション登録をする
  2. アクセストークンを作成する
  3. OAuth認証を利用する
  4. 指定した文字を含むつぶやきを取得

1. アプリケーション登録をする

まずTwitterDevelopersにアクセスします。自分のもっているアカウントの情報『Username』と『Password』を入力し、【Log in】ボタンをクリックしログインをします。※アカウントを持っていない場合は要取得

My applications画面から、【Create a new application】ボタンをクリックし、Create an applicationページ(アプリケーション登録画面)に遷移します。
イメージ1

  • Name アプリケーションの名前
  • Description アプリケーションの説明
  • Website 設置するサイトのurl
  • Callback URL Twitter認証成功後、ユーザがリダイレクトされるURL ※任意

『Name』『Description』『Website』『Callback URL(※任意)』を入力し、利用規約を確認したら【Yes, I agree】にチェックを入れ、【Create your Twitter application】ボタンをクリックすると、アプリケーションの初期情報を登録できます。
登録後はアプリケーションの設定管理画面に遷移します。


2. アクセストークンを取得する

APIを呼び出す為には下記4つの情報が必要です。

  • [1]consumerKey
  • [2]consumerSecret
  • [3]accessToken
  • [4]accessTokenSecret

アプリケーションの初期情報を登録すると[1]と[2]は自動に作成されますが、[3]と[4]については設定画面下部の【Create my access token】ボタンをクリックして取得する必要があります。
取得した情報を確認するには、ボタンをクリックしたあと管理画面を更新するか、【OAuth tool】タブをクリックすることで確認ができます。


3. OAuth認証のライブラリを利用する

githubで公開されているOAuthライブラリ「twitteroauth」を使用させて頂きました。
ダウンロードしたファイルの内、下記2ファイルをサーバの任意のフォルダにアップロードします。

  • twitteroauth/OAuth.php
  • twitteroauth/twitteroauth.php

4. 指定した文字を含むつぶやきを取得

今回は「webnaut」と「beeworks」をつぶやいた人(AND条件)」のデータを取得してみたいと思います。テスト用のファイルindex_test.phpを作成し、下記のコードを記述します。

<?php
 
require_once("twitteroauth/twitteroauth.php");
 
$consumerKey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$consumerSecret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$accessToken = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$accessTokenSecret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
 
$twObj = new TwitterOAuth($consumerKey,$consumerSecret,$accessToken,$accessTokenSecret);

まず、サーバ上の任意のフォルダにアップロードしたtwitteroauth.phpを読み込みます。
次に、アプリケーション登録の際に取得した4つの情報「consumerKey」「consumerSecret」「accessToken」「accessTokenSecret」を引数に指定し、「TwitterOAuth」クラスをインスタンス化。OAuth認証が利用出来る状態にします。

$andkey = "webnaut AND beeworks";
$options = array('q'=>$andkey,'count'=>'30');
 
$json = $twObj->OAuthRequest(
    'https://api.twitter.com/1.1/search/tweets.json',
    'GET',
    $options
);
 
$jset = json_decode($json, true);

変数に検索用文字列「webnaut」「beeworks」を指定します。
格納した文字列をq(クエリ)パラメータに指定、取得する件数を設定します。(※ここでは30件と指定)
OAuth認証を行なってTwitterAPIへアクセスし、設定した$optionsパラメータを呼び出します。
json_decode関数を使用し、jsonデータをphpの変数(連想配列)として取得します。

foreach ($jset['statuses'] as $result){
    $name = $result['user']['name'];
    $link = $result['user']['profile_image_url'];
    $content = $result['text'];
    $updated = $result['created_at'];
    $time = $time = date("Y-m-d H:i:s",strtotime($updated));
 
    echo "<img src='".$link."''>"." | ".$name." | ".$content." | ".$time;
    echo '<br>';
}
?>

取得したデータにアクセス(foreachで配列数の数分)。
表示させたい要素それぞれを、用意した変数に格納し、最後に表示処理をします。

上記を記述したらindex_test.phpを保存し、サーバにアップロードし表示を確認します。
img_developn_130903_02.jpg

※データ取得までのためhtmlは最小限の記述にしています。文字化けを防ぐためにはheadで文字コードを設定して下さい。

TwitterAPIへのアクセス方法や、アクセス後に取得できるJSONデータの説明についての詳細は公式サイトで確認できます。


取得の際に覚えておきたいver1.1移行の主な変更点

OAuth認証が必須に

ver1.0では検索文字などをキーにつぶやきを取得する際、OAuth認証なしでのアクセスが可能でしたが、
ver1.1 からはすべての情報取得にOAuth認証が必要となりました。

サポートがJSONのみへ

ver1.0では【JSON, XML, Atom, RSS】4つの形式が提供されていましたが、ver1.1では【JSON】のみのサポートになっています。

レートリミットの変更

上記のようにキーワードで検索してつぶやきを取得する際ver1.0では1時間あたり350回というアクセス制限がありましたが、ver1.1では15分間で180回のアクセスが可能という制限に変更になりました。

いかがでしたか。
意外と簡単にデータ取得ができたので、今後はつぶやきデータを使った面白い演出やサービスを考えてみたいと思います!

Develop

記事が気に入ったらシェアしよう

この記事を書いたメンバー

成果につながるWeb制作を

成果につながるWeb制作を
ビーワークスのミッションは「デザインで世の中を動かすこと」。
出版物、販促ツール、WEBサイト、ゲームアプリなど、多用な領域でクライアントのビジネス拡大に貢献するデザインを提供する制作会社です。

記事の更新をお知らせします!

  • 採用情報

    採用情報

    記事を読んで興味を持った方、
    ビーワークスの考え方に共感した方、
    一緒に新しいデザイン、創りませんか?

  • 制作実績

    制作実績

    日々、制作実績を更新中!
    ビーワークスの多様な実績をぜひご覧ください。

  • 蟹座
  • 獅子座
  • 乙女座