初めてのTwitchAPI利用方法



# はじめに

TwitchAPIには100種類上のエンドポイントが用意されており、それらすべてを無料で利用することができます。(レート制限あり)

今回はTwitchAPIの利用までの流れを紹介していきます。

# 目次

1. Twitch Developersでアプリケーションの登録
2. アクセストークンの取得
3. 利用したいAPIにアクセス

# 1. Twitch Developersでアプリケーションの登録

まず、[Twitch Developers](https://dev.twitch.tv/login)にアクセスし、アプリケーションの登録をします。登録手順に関しては、以下の記事で丁寧に説明されていたため、そちらを参考にしてください。

※アプリケーション名「test」「test_app」では作成できなかったため、
　おそらくアプリケーション名の重複が許されていないかと思います。
　重複していてもエラー表示が特に出ないため、要注意です。

https://qiita.com/pasta04/items/750d71d41e5edd12932b#new-twitch-api

登録後に確認できるクライアントIDとクライアントの秘密をアクセストークンの取得で使用するため、メモしておいてください。

# 2. アクセストークンの取得

TwitchAPIには[ユーザーアクセストークン](https://dev.twitch.tv/docs/authentication/#user-access-tokens)と[アプリアクセストークン](https://dev.twitch.tv/docs/authentication/#app-access-tokens)の２種類あります。

どちらのアクセストークンが必要なのかに関しては[Twitch API Reference](https://dev.twitch.tv/docs/api/reference/)に記載されているため、使用するAPIに合わせてアクセストークンを取得すると良いでしょう。
取得方法に関しては、[Twitch APIの公式](https://dev.twitch.tv/docs/authentication/getting-tokens-oauth/)や以下の記事で詳しく説明されているため、それぞれの特徴について話していきます。

https://qiita.com/pasta04/items/2ff86692d20891b65905#3-the-oauth-client-credentials-flow

## ユーザーアクセストークン

### ユーザーアクセストークンとは？

ユーザーアクセストークンは、リソースにアクセスするためにユーザーの許可を必要となるAPIで使用されます。Twitchはスコープを使用して、アプリがアクセスするために許可が必要なリソース、またはリソース内のフィールドを識別しています。

TwitchAPIのスコープ一覧は[こちら](https://dev.twitch.tv/docs/authentication/scopes/)から。

### 取得方法１：**Implicit Grant Flow**

Implicit Grant Flowは、クライアントサイドのみで完結するため、サーバーが不要なJavascriptアプリやモバイルアプリを対象としています。認証コードを交換するステップが不要なので、ユーザーがアクセストークンをすぐに受け取れます。

### 取得方法２：**Authorization Code Grant Flow**

Authorization Code Grant Flowは、サーバーを使用し、クライアントの秘密(twitch developersで取得)を安全に保存でき、TwitchAPIに対してサーバー間リクエストを行うことができるアプリを対象としています。

認証コードがまずクライアントに送られ、その後サーバー側でアクセストークンが交換されるため、トークンの露出リスクが低減されます。また、リフレッシュトークンも取得できるため、アクセストークンが期限切れになった場合でも、新しいトークンを取得できます。これにより、ユーザーに再度ログインしてもらう必要がなくなります。

### 取得方法３：Device code grant flow

Device code grant flowは、サーバーを使用せず、入力機能が限られたデバイス(スマートTV、ゲームコンソール、プリンタ など)を対象としています。

入力機能が制限されているデバイスでも、ユーザーはスマートフォンやPCを使用して簡単に認証できます。

## アプリアクセストークン

### アプリアクセストークンとは？

アプリアクセストークンは、リソースへのアクセスにユーザーの許可を必要としないAPIで使用されます。ユーザーアクセストークンと異なり、アプリアクセストークンの取得方法は１つです。

### 取得方法：Client credentials grant flow

Client credentials grant flowは、アプリアクセストークンを使用するサーバー間の API リクエストのみを対象としています。事前にアプリアクセストークンを取得しておき、サーバー側で任意のAPIにアクセスするという流れになります。

# 3. 利用したいAPIにアクセス

[Twitch API Reference](https://dev.twitch.tv/docs/api/reference/)から利用したいAPIを探し、内容に従ってHTTPリクエストを送信すればリソースを取得できます。

以下の「Get Users」を例に挙げて説明します。「Get Users」はどちらのアクセストークンでもアクセス可能ですが、ユーザーアクセストークンを指定した場合、リクエストはアクセストークン内のユーザーに関する情報が返ってきます。
そのため、アプリを利用するユーザーの情報を取得したい場合は、ユーザーアクセストークンを取得する必要があります。
ユーザーIDを把握している場合は、アプリアクセストークンを利用して、ユーザーIDを指定してあげることで、指定したユーザー情報を取得することも可能です。

![TwitchAPI_Get-Users.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3579041/0abf3f3e-e6b6-506b-1bf9-e47535aeabbc.png)

# まとめ

TwitchAPIには多くのエンドポイントが用意されているため、
必要なアクセストークンを取得し、好きなAPIを呼び出して遊んでみてください！

# 参考文献

- [Twitch API](https://dev.twitch.tv/docs/api/)
- [twitch developers](https://dev.twitch.tv/login)
- [Twitch APIを利用してみよう](https://qiita.com/pasta04/items/750d71d41e5edd12932b#new-twitch-api)
- [Twitch APIに必要なOAuth認証のアクセストークンを取得しよう](https://qiita.com/pasta04/items/2ff86692d20891b65905)
- [OAuth 2.0 Device Flow Grant](https://alexbilbie.github.io/2016/04/oauth-2-device-flow-grant/)