ツイキャス公式でPHPとRubyのサンプルソースはあるのだが、Pythonしかわからないので自分で作ってみた。
HTTPリクエストのPOSTメソッドには、urllibライブラリを使う。
HTTPリクエストヘッダーにapplication/x-www-form-urlencoded
を指定するので、パラメータはURLエンコードしなければならない。この辺で結構つまづいた。
引用資料
開発API - ツイキャス
TwitCastingのAPIv2ドキュメント
環境
- Python 3.11.1 64-bit
アプリケーションの登録
ツイキャス公式サイト開発APIページに準じて、アプリケーションを登録する。
開発の流れ
まず、開発者向けページからアプリケーションを登録します。CreateNewApp から必要な情報を入力して、Createします。
開発者向けページへアクセスする。
ログインを求められたらログインする。
Create New Appを選択する。
Name,Descriptionは適当で良い。
Callback URLにはhttp://localhost:8000/
を指定する。
Createを選択する。
登録が完了したら、ClientID, ClientSecretが発行される。
ブラウザで連携アプリの許可
APIドキュメントに準じて、ブラウザでアプリ許可を得る。
Step1
以下のURLにブラウザでアクセスし、アプリ許可確認画面で「連携アプリを許可」または「キャンセル」を選択します。
URL
https://apiv2.twitcasting.tv/oauth2/authorize?client_id={YOUR_CLIENT_ID}&response_type=code&state={CSRF_TOKEN}
{YOUR_CLIENT_ID}
の部分を上記で取得したClientIDに読み替える。
{CSRF_TOKEN}
は不要なので&state=
以降を削除した。
例)ClientIDがAAA
の場合は以下のようになる。
https://apiv2.twitcasting.tv/oauth2/authorize?client_id=AAA&response_type=code
このURLをブラウザのアドレス欄に貼り付けて移動する。
連携アプリを許可を選択する。
ブラウザでエラー画面等が出るが、気にせずアドレス欄のURLをコピーする。
アドレス欄のURLは以下のようになっている。
http://localhost:8000/?code={CODE}
codeパラメータが取得できた。
アクセストークンの取得
APIドキュメントに準じて、OAuth認証でアクセストークンを取得する。
Step2
許可後にコールバックに渡された code パラメータを使用してユーザのアクセストークンを取得します。
{CODE}
{YOUR_CLIENT_ID}
{YOUR_CLIENT_SECRET}
はそれぞれ上記で取得したものに読み替える。
import json
import urllib.request
import urllib.parse
url = 'https://apiv2.twitcasting.tv/oauth2/access_token'
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
}
params = {
'code': {CODE},
'grant_type': 'authorization_code',
'client_id': {YOUR_CLIENT_ID},
'client_secret': {YOUR_CLIENT_SECRET},
'redirect_uri': 'http://localhost:8000/',
}
data = urllib.parse.urlencode(params).encode('utf-8')
req = urllib.request.Request(url, data=data, headers=headers, method='POST')
with urllib.request.urlopen(req) as res:
data = json.load(res)
print(data)
{'token_type': 'Bearer', 'expires_in': 15552000, 'access_token': 'BBB'}
アクセストークンを取得できた。
有効期限は180日間となっていた。
なお、アクセストークンを再度取得しようとすると404エラーとなる。
メモし忘れた場合などは、開発者向けページからClientIDを再発行してやり直せば良い。