綺麗に死ぬITエンジニア

PHPからTwitterでフォローしている/されているユーザーを全て取得する

2017-01-30

PHPからTwitter APIを叩く方法について、以前こちらの記事に記載しました。

今回は、フォローしている人及びフォロワーの人たちのIDを全て取得する方法を書き残しておきます。

Twitter APIにおけるユーザー取得上限

通常、Twitter APIでフォローしている人及びフォロワーの人たちのIDを取得すると、1度のリクエストで5000人分までしか取得できません。つまり、5000人を超えるユーザーを取得したい場合は、何度かリクエストを飛ばす必要があります。

ライブラリのインストール

PHPで作るTwitter自動化アプリケーション入門のときと同様に、TwitterOAuthというライブラリを利用します。

Composerを使って、以下のようにインストールします。

composer require abraham/twitteroauth

ソースコード

以下のようにすることで、5000人を超える、全てのユーザーのIDが取得できます。

<?php
require "vendor/autoload.php";

use Abraham\TwitterOAuth\TwitterOAuth;

$connection = new TwitterOAuth(
    "[Consumer Key]",
    "[Consumer Secret]",
    "[Access Token]",
    "[Access Token Secret]"
);

if ($connection) {
    function getIds($target)
    {
        $ids = [];
        $cursor = -1;
        do {
            $result = $connection->get("$target/ids", [
                'cursor' => $cursor
            ]);
            if (!is_array($result->ids)) {
                throw new \Exception;
            }
            foreach ($result->ids as $id) {
                $ids[] = $id;
            }
            $cursor = $result->next_cursor;
        } while ($cursor != 0);

        return $ids;
    }

    // フォローしている人の全ID
    $friendIds = getIds('friends');

    // フォロワーの全ID
    $followerIds = getIds('followers');
}

注意点として、あまりに人数が多いと、人数/5000回だけリクエストが無条件で飛んでしまいます。そこまで気になるケースは少ないかと思いますが。

なお、このコードについては、一応動作テスト済みです。ロジックを応用すれば、他のAPIでも利用できると思いますので、ご参考までに。

筆者について

フリーランスエンジニアとして活動している、「もりやませーた」です。

筆者のTwitterはこちら。記事に関するご意見等はTwitterの方へお寄せください。

その他業務に関するお問い合わせは、こちらのページをご覧ください。

PHP Twitter