はじめに
どうも、最近Twitch APIを使って色々遊んでいます。
そんな中でAPIのクエリに指定するIDについて少々詰まりました。
この"ID"とは、例えばあるストリーマーの配信情報を得たいときに
"https://api.twitch.tv/helix/streams?user_id="
このURLに続けて入力するストリーマーのIDです。
無事、解決したのでメモ書き程度に書いていきます。
発生した問題
"https://api.twitch.tv/helix/streams?user_id="
このURLのクエリに続くIDとして
"https://www.twitch.tv/○○" (配信のURL)
この○○を入力してAPIを叩いてみました。
結果、リスポンスは
{"data":[],"pagination":{}}
情報量ほぼ0のJSONが返ってきました。
トークンが無効なのであれば、ステータスコード401が返るのでアクセス権の問題ではなさそう。
そして調べた結果、
クエリに適合した配信が存在しない時にこのような空のJSONが返されるみたいです。配信は確かに存在していたので"user_id"に指定したIDが問題っぽい。
そしてさらに調べた結果、
自分が今までIDだと思っていたものがどうやら"ユーザ名"という扱いで、idは別に存在することがわかりました。
正しい"ID"の取得方法
IDを取得するには、以下のAPIを叩く必要があるらしいです。
API : "https://api.twitch.tv/helix/users"
(参照)https://dev.twitch.tv/docs/api/reference/#get-users
これにクエリを加えて
"https://api.twitch.tv/helix/users?login=△△"
この△△にユーザ名を入れてアクセスすることで、以下のようなJSONが返されます。
{
"data": [
{
"id": "141981764",
"login": "twitchdev",
"display_name": "TwitchDev",
"type": "",
"broadcaster_type": "partner",
"description": "Supporting third-party developers building Twitch integrations from chatbots to game integrations.",
"profile_image_url": "https://static-cdn.jtvnw.net/jtv_user_pictures/8a6381c7-d0c0-4576-b179-38bd5ce1d6af-profile_image-300x300.png",
"offline_image_url": "https://static-cdn.jtvnw.net/jtv_user_pictures/3f13ab61-ec78-4fe6-8481-8682cb3b0ac2-channel_offline_image-1920x1080.png",
"view_count": 5980557,
"email": "not-real@email.com",
"created_at": "2016-12-14T20:32:28Z"
}
]
}
この"id"に対応する"141981764"がクエリに使うことのできるIDです。
勘違いの理由
Twitchにはユーザ名と別に表示名というのがあって、表示名を設定するとユーザの名前は
表記名(ユーザ名)
という表記になる。
また、ユーザ名はアルファベットで設定される。
加藤純一です(kato_junichi0817) 名前出してすいません
実際にこんな感じで表示されるので、感覚的にはこの右側のやつがIDかな~と思ってしまうのは自分だけではないはず。多分。
まさかIDが隠しパラメータ的なやつだとは思いませんでした。。。
この記事が自分と同じような勘違いをしている人の参考になれば嬉しいです。それでは。