Twitch CLIでアフィリエイト/パートナーのテスト環境構築
Twitchでは、以前からアフィリエイト/パートナー権限のあるユーザーしか取得できないAPIいわゆるサブスク、ビッツのデータなどがありました。これらは、私たち一般アカウントの開発者からするとテストなどができない状態でありとても困っていました。8年前から議論がされていましたが、それがTwitch CLIとしてリリースされているとのことなので今回手順を書きたいと思います。
8年前に立てられたスレッド
Twitch CLIとしてベータ提供が始まったこと
Twitch CLIについて
Github Repo
現在モック機能に関してはベータ版なので開発者からのissue貢献を歓迎しているようです。
テスト環境の構築する
Twitch CLIをダウンロードしてインストールする
MacOS or Linux
macOSまたはLinuxにCLIをインストールするには、Homebrewを使用します。
brew install twitchdev/twitch/twitch-cli
Windows
CLI を Windows にインストールするには、Scoop を使用します。
scoop bucket add twitch https://github.com/twitchdev/scoop-bucket.git
scoop install twitch-cli
Manual Download
CLIを手動でダウンロードするには、「Twitch CLI Releases」にアクセスします。
Twitch CLIの使用法
Twitch CLI をインストールしたら、ターミナル ウィンドウを開き、コマンド プロンプトで twitch と入力して、CLI の使用方法を表示します。
$ twitch
A simple CLI tool for the New Twitch API and Webhook products.
Usage:
twitch [command]
Available Commands:
api Used to interface with the Twitch API
configure Configures your Twitch CLI with your Client ID and Secret
event Used to interface with Event services, such as Eventsub and Websub.
help Help about any command
mock-api Used to interface with the mock Twitch API.
token Logs into Twitch and returns an access token according to your client id/secret in the configuration.
version Returns the current version of the CLI.
Flags:
--config string config file (default is $HOME/.twitch-cli/.twitch-cli.env)
-h, --help help for twitch
Use "twitch [command] --help" for more information about a command.
Twitch CLIを構成する
Twitch CLI を使用する前に、アプリケーションのクライアント ID とシークレットを使用して構成する必要があります。 Twitch クライアント ID とシークレットの取得については、「アプリを登録する」を参照してください。
configure
コマンドは、CLI の実行に必要な情報を設定します。使用するほとんどのコマンドで、CLI はアプリケーションのクライアント ID とシークレットを必要とします。デフォルトでは、対話型プロンプトを使用して情報を要求するように構成します。
% twitch configure
Client ID: t214nt...
Client Secret: hyss6ng...
Updated configuration.
対話なしで設定したい場合は以下のフラグを利用してください。
Flag | Shorthand | Description |
---|---|---|
--client-id | -i | Your app's client ID. |
--client-secret | -s | Your app's client secret. |
% twitch configure -i g4lvqc... -s u4vcrix...
Updated configuration.
モックデータの生成とサーバーの起動
mock-api コマンドを使用して、アプリケーションの開発とテストに使用できるモック データとモック サーバーを作成します。
データの生成
次のターミナル出力は、generateが返す内容を示しています。この出力では、生成したパートナー権限を持つユーザーと、あなたのために登録したクライアントIDが特定されます。
% twitch mock-api generate
2021/10/15 08:38:40 Creating categories...
2021/10/15 08:38:40 Creating users...
2021/10/15 08:38:40 Creating team...
2021/10/15 08:38:40 Creating channel points rewards and redemptions, follows, blocks, mods, bans, editors, and team members...
2021/10/15 08:38:40 Creating streams...
2021/10/15 08:38:40 Creating tags...
2021/10/15 08:38:40 Creating stream tags, videos, clips, and stream markers...
2021/10/15 08:38:40 User ID 29405430 has all applicable units (streams, subs, and the like) and is a partner for use with the API
2021/10/15 08:38:40 Created Client. Details:
Client-ID: cb7b5eba670c41fa757410b811601b
Secret: f40fbf26d4e2c20de5772e4408589c
Name: Mock API Client
2021/10/15 08:38:40 Created authorization with token 2056dbbed991d96
2021/10/15 08:38:40 Finished generation.
generate を複数回実行すると、データが上書きされるのではなく追加されることに注意してください。
モックデータの削除
モックデータを削除するには
- サーバーが起動中の場合は停止します。
- macOSでは、$HOME/.twitch-cliに移動します。
-
eventCache.db
を削除
モックデータの取得
これらのリクエストのベースURLは、http://localhost:8080/units
です。リクエストにアクセストークンやクライアントIDを必要とせず、リソースの全てのモックデータを返します。
/categories
/clients
/streams
/subscriptions
/tags
/teams
/users
/videos
サーバーを起動する
% twitch mock-api start
サーバーはリクエストされる全てを書き出します。
2021/10/15 09:06:03 Starting mock API server on http://localhost:8080
2021/10/15 09:06:03 Mock server started
2021/10/15 09:32:22 GET /units/clients
2021/10/15 10:01:54 POST /auth/authorize
2021/10/15 10:03:39 POST /auth/token
2021/10/15 10:30:15 GET /mock/users
ポートを変更したい場合は、
% twitch mock-api start -p 8000
サーバーを停止する
<ctrl+c>
を入力します。
ユーザーのアクセストークンの取得
ユーザーアクセストークンを取得するには、http://localhost:8080/auth/authorize
にPOSTリクエストを送信します。
Query Parameter | Description |
---|---|
client_id | generate サブコマンドが作成した client ID。プログラムで ID を取得するには、「client ID とsecretの取得」を参照してください。 |
client_secret | generate サブコマンドが作成したclient secret。プログラムでsecretを取得するには、client ID とsecretの取得を参照してください。 |
grant_type |
user_token を設定する必要があります。 |
user_id | トークンを取得するユーザー。 |
scope | 特定のユーザーに対して要求するスコープのスペース区切りのリスト。必要なスコープについては、呼び出す予定のエンドポイントのドキュメントを参照してください。リストを URL エンコードすることを忘れないでください。 |
次の例は、ユーザーアクセストークンを取得する方法を示しています。
curl -X POST 'http://localhost:8080/auth/authorize?client_id=cb7b5eba670c41fa757410b811601b&client_secret=f40fbf26d4e2c20de5772e4408589c&grant_type=user_token&user_id=29405430&scope=user:read:email%20user:edit'
レスポンスにはrefresh tokenは含まれません。
{
"access_token": "ebf5a366721754b",
"refresh_token": "",
"expires_in": 86399,
"scope": [
"user:read:email",
"user:edit"
],
"token_type": "bearer"
}
サブスクリプション
アフィリエイト/パートナーユーザーに限った機能ですが、サブスクの情報を取得することができます。
公式のTwitch APIリファレンスによると最大100件まで取り出すことができます。※それ以上はまだ未確定な情報ですのでフォーラムなどで質問してみてください。
ヘルプについて
もしここや公式のガイドにあなたが行いたいことが載っていないのであれば、TwitchDev Discordの#cli-helpで質問することができますので是非活用してください。
Discussion