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でも利用できると思いますので、ご参考までに。