プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
PHP、特定のTwitterアカウントのフォロー一覧を取得する
先に要点だけ書いておくと

1.TwitterOAuthを使って
2.GETで「friends/ids」にアクセスして
3.レスポンスの「ids」がフォローしている人のID一覧なので
4.「3.」で取得したIDを元に名称等を取得する


で、サクっとできます。

ちなみに、既に

PHP、特定のTwitterアカウントのフォロワー一覧を取得する

の記事をご覧になっている方は、上記記事の内容の
「followers/ids」を「friends/ids」に変えれば、それで完了です。

それでは、詳細を書いていきます。

ちょっくら特定のアカウント……というか、自分のアカウントのフォロー一覧を
定期的に取得したくなりましてね。
PHPでサクっとできないかな~と思ったのが、今回のきっかけです。

サクっと……でもないけど、それなりにできました\(--)/

やり方は

1.Twitter側の準備として
   (1)Consumer key
   (2)Consumer secret
   (3)Access Token Secret
   (4)Access Token Secret secret
  の4つの値を取得する

2.TwitterOAuthを頂いてくる

3.PHPのプログラムを作る

です。
1と2については

PHP、Twitterへの自動投稿機能を作成(2015年9月版)。

の記事を参照してください。

3のサンプルプログラムは下に置いておきますφ(--)

<?php

    //「autoload.php」読み込み
    //「twitteroauth/」フォルダは本プログラムと同階層に配置
    require_once dirname(__FILE__) . '/twitteroauth/autoload.php';
    use Abraham\TwitterOAuth\TwitterOAuth;

    // 「Consumer key」値
    $ck = 取得した「Consumer key」の値;
    // 「Consumer secret」値
    $cs = 取得した「Consumer secret」の値;
    // 「Access Token」値
    $at = 取得した「Access Token」の値;
    // 「Access Token Secret」値
    $ats = 取得した「Access Token Secret」の値;

    //リクエストを投げる先(固定値)
    $url = "friends/ids";

    //対象のID
    $screen_name = 【取得対象のアカウントのID】;

    // OAuthオブジェクト生成
    $toa = new TwitterOAuth($ck,$cs,$at,$ats);

    //取得
    $res = $toa->get($url, compact('screen_name'));

    // レスポンス表示

    if (isset($res->errors[0])){
        print "error:" . $res->errors[0]->message . "<br>\n";
    }else{
//        var_dump($res);
        $cnt = 0;
        foreach($res->ids as $id){
            $cnt++;
            print $cnt . ":" . $id . "<br>\n";
        }
    }

?>

将来的には分かりませんが、2015年10月現在と同じ状況であれば
「Consumer key」「Consumer secret」「Access Token」「Access Token Secret」の値と

//対象のTwitter ID
$screen_name = 【取得対象のアカウントのID】;

の部分だけ変えれば動くはずです。

ただし、これは動きを分かりやすくするために用意した必要最低限のサンプルプログラムです。
本格的に作るなら、もう少し作りこむ必要があります。

まず、レスポンスで返ってくる一覧の情報はTwitterで管理されているIDです。
アカウント名ではありません。
やりたいことによっては、IDからその他の情報を引っ張る部分の作りこみが必要です。
※やり方は、気が向いたら別途、記事に書きます。

あと、私は実際に試していませんが、一度に返ってくる一覧の件数は最大5000件だそうです。
5000件を超える場合は、続きを取得する必要があります。

続きを取得したい場合は、
レスポンスの「next_cursor」で返ってきた値を
パラメータに「cursor」としてくっつけて再リクエストしてください。
それで続きが5000件取得できるそうです。

残念ながら私のアカウントは5000件もフォローしていないので、試してはいません。
他の人のアカウントに対してテストするのも、ちょっと抵抗がありましたしね。

ただまぁ、やり方としては

1.レスポンスの「next_cursor」を取得
2.空じゃなかったら「cursor」として設定して再取得

をループで回すだけで行けると思いますよ。

あと大事な注意事項として、2015年10月現在、15分あたり15回のリクエストしかできないようです。
「あんまりいっぱい使って負荷かけてくるんじゃねーぞー」ということなのでしょう。
そのため

・真っ当なやり方で
・大量のアカウントのフォロー一覧を
・短時間で

取得するのは無理そうですね。

まぁ、アカウントを大量に用意してkeyやTokenの値を変えながらやれば……ごほごほご(-q-)
そんな反則スレスレ行為をやる人が多いから、電話番号認証等が追加されたのでしょうね。

あくまで個人的な意見ですが、
不特定多数向けに公開するサービスとして利用するのは現実的ではないと思います。

余談っぽい部分が長くなってしまったので、まとめます。

PHPのプログラムによるTwitterのフォロー一覧の取得ですが、
PHPで自動投稿のプログラムを作ったことがある人であれば

1.リクエストを投げる先が「friends/ids」だよ
2.戻りの「ids」配列がフォローしている人のID一覧だよ
3.5000件を超える場合は戻りの「next_cursor」をパラメータ「cursor」に設定して再クエストしてね

を意識すれば、取りあえず動くものは作れると思います。

そんな感じ\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● PHP  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事