New Twitch APIを利用してユーザー(チャンネル)のフォロワー数を取得する。Twitch API v5ではフォロワー数はチャンネルオブジェクトのプロパティの一つであったが、New Twitch APIではデータモデルが見直され、チャンネルオブジェクトはユーザーオブジェクトに統合された。よって、New Twitch APIでは、ユーザーリソースに対してリクエストを行うことによって、フォロワー数を取得することができる。
下記は、New Twitch APIでユーザーリソースに対してリクエストを行い、フォロワー数を取得するコードの例。
class TwitchApiClient
{
private $endpoint = 'https://api.twitch.tv/helix/';
private $oauthClientIdHeader;
private $oauthTokenHeader;
public function __construct($CLIENT_ID, $ACCESS_TOKEN)
{
$this->oauthClientIdHeader = "Client-ID: $CLIENT_ID";
$this->oauthTokenHeader = "Authorization: Bearer $ACCESS_TOKEN";
}
public function get($resource, array $queryParams)
{
$url = $this->endpoint . $resource;
if (!empty($queryParams))
$url .= '?' . http_build_query($queryParams);
$response = $this->execCurlGET($url);
sleep(1);
return json_decode($response, true);
}
private function execCurlGET($url)
{
$cmd = 'curl' .
" -H '{$this->oauthClientIdHeader}'" .
" -H '{$this->oauthTokenHeader}'" .
" -X GET '$url'";
echo "# $cmd\n";
return exec($cmd);
}
}
$CLIENT_ID = '_CLIENT_ID_';
$ACCESS_TOKEN = '_ACCESS_TOKEN_';
$client = new TwitchApiClient($CLIENT_ID, $ACCESS_TOKEN);
$params = [
'to_id' => '19571641', // ninja
'first' => 1,
];
$response = $client->get('users/follows', $params);
var_dump($response);
フォロワー数は、
https://api.twitch.tv/helix/users/follows
に対し、クエリパラメータとして to_id
パラメータを付加してGETリクエストを行うことによって取得することができる。
to_id
にはユーザーIDを指定する。上記のコードの例では、ユーザー名 ninja のユーザーIDを指定している。
APIレスポンスとして返ってくるデータは、total
、data
、pagination
フィールドから構成され、total
の値が取得したいフォロワー数に該当する。
data
フィールドには、フォロワーのユーザー情報が含まれている。デフォルトでは20件のユーザー情報が含まれる。この件数は、APIリクエストを行う際のクエリパラメータとして first
パラメータに値を設定することで変更できる。設定できる最大値は 100
まで。上記のコードの例では、フォロワー数を取得するのが主な目的なため、first
に 1
を指定し、レスポンスに含めるデータ件数を抑制している。
pagination
フィールドのデータは、結果のページネーションに利用するためのもの。data
フィールドに含まれるユーザー情報の次の結果セットを取得したい場合、APIリクエスト時のクエリパラメータとして after
パラメータに pagination
フィールドの cursor
の値を指定すれば良い。