🚀

Twitch CLIでアフィリエイト/パートナーのテスト環境構築

2022/09/25に公開

Twitchでは、以前からアフィリエイト/パートナー権限のあるユーザーしか取得できないAPIいわゆるサブスク、ビッツのデータなどがありました。これらは、私たち一般アカウントの開発者からするとテストなどができない状態でありとても困っていました。8年前から議論がされていましたが、それがTwitch CLIとしてリリースされているとのことなので今回手順を書きたいと思います。

8年前に立てられたスレッド

https://discuss.dev.twitch.tv/t/partnered-account-for-testing-purposes/1146/6

Twitch CLIとしてベータ提供が始まったこと

https://twitch.uservoice.com/forums/310213-developers/suggestions/41270905-provide-a-way-for-developers-to-test-features-whic

Twitch CLIについて

https://blog.twitch.tv/en/2020/12/17/introducing-the-twitch-command-line-interface-tool/
https://dev.twitch.tv/docs/cli

Github Repo

現在モック機能に関してはベータ版なので開発者からのissue貢献を歓迎しているようです。
https://github.com/twitchdev/twitch-cli

テスト環境の構築する

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