Twitter API と file_get_contents でかんたん Twitter クライアント

こんにちは、飯塚です。
今回は第2回初心者勉強会で少し取り上げた、twitter API を使った情報の取得方法について説明します。
勉強会の最後に、下記のようなコードを取り上げました。

<?php
$arr = json_decode(file_get_contents("https://api.twitter.com/1/statuses/user_timeline.json?include_rts=true&screen_name=tushuhei"));
foreach ($arr as $element) {
    var_dump($element->text);
}

このコードで、[twitter:@tushuhei] のつぶやき最新20件を取得して、つぶやきの内容だけを取得することができます。
取得するものを public_timeline (世界中の人の最新のつぶやき)に変えたり、
if 文を加えて特定の文字列が含まれるつぶやきだけを抜き出したり、
つぶやきだけでなくその日付や場所に注目したりするだけで、一気にバリエーションが拡がります。

Twitter API の一覧はここです。

API の URL ってどうやってみるの?

URL を以下のように分解して考えるとわかりやすいです。

https://api.twitter.com/1/ <- 何のAPI?
statuses/user_timeline       <- Twitter API の statuses/user_timeline を使う
json                                    <- json 形式で取得
?                                         <- ここからパラメータを追記します
include_rts=true                 <- RT を含む
&                                        <- さらにパラメータを記す
screen_name=tushuhei       <- @tushuhei のタイムライン

と考えるわけです。
この URL で取得した json 形式のデータを json_decode で PHP で扱える形に直して扱います。

パラメータの詳細はその API の仕様ページに書いてあります。

これをブラウザに出力するには

とっても簡単で、このファイルを DocumentRoot に置けば、ブラウザから見ることができます。

※ DocumentRoot がどこか分からない![mac 向け]
そのときは、Apache の設定ファイルを見ます。

sudo vim /etc/apache2/httpd.conf 

とした後、DocumentRoot で検索をかけて、どこに DocumentRoot が設定されているか確認しましょう。
設定を変更したら、必ず

sudo apachectl configtest

で Syntax OK (文法チェックOK)を確認した後、

sudo apachectl restart

apache を再起動して変更を反映させましょう。
(「システム環境設定」から「Web共有」を一度オフにして再度オンにすることでも同様の操作ができます。)

年末年始にちょっとしたアプリを作ってみては如何でしょうか?
よいお年を!(^_^)/

追記(2012年1月11日)

ただ var_dump で出力するだけじゃ汚くてやだ!という方のために。
このように書けば、HTML で出力結果を自在に表現できます。
あとは style 属性や CSS を駆使してデザインを仕上げましょう!

<?php
$arr = json_decode(file_get_contents("https://api.twitter.com/1/statuses/user_timeline.json?include_rts=true&screen_name=tushuhei"));
?>
<html>
    <head>
        <title>かんたん Twitter</title>
        <meta charset="utf-8">
    </head>
    <body>
        <? foreach ($arr as $element){ ?>
        <? echo $element->text ?>
        <br>
        <? } ?>
    </body>
</html>