Python

twitcasting api register から webhook登録まで

今回はツイキャスAPIでwebhookを使いましたので書いていきます

日本語での公式ドキュメントが公開されていますが、少しばかり苦戦したところもありましたので記述します。これが誰かの役に立つことを願います。

登録

app作成

  • アプリケーション登録ページで必要な情報を入力し、アプリケーションを登録します。
    • アクセストークンの取得には ClientID と ClientSecret が必要です
    • ClientSecret は第三者に漏洩しないよう取扱にご注意下さい

アプリケーション登録ページで年齢が聞かれます。

そうすると MyAppsのページへ行けます

「Create New App」で 新しいアプリケーションを登録します。

作成されました。

code取得

こちらのClientIDを使いcodeを取得します。 CSRF token はオプションです。

https://apiv2.twitcasting.tv/oauth2/authorize?client_id=asdfksadkfhksjdahfk2i3ufdsfe9824fhdskjfhkdsf&response_type=code

上のサイトにアクセスし、権限を付与します。cliend_idを自分のアプリケーションのものに書き換えてアクセスしてください。

アクセスを許可した後にそのAppに登録されたcallbackURLにリダイレクトされます。

今回はlocalhostに何もサーバーを立てていないので何も起こりませんがリダイレクトURLにcodeが付与されます。

なのでそれを直接コピーします。

curl -X POST "https://apiv2.twitcasting.tv/oauth2/access_token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "code=asldfjsaldkfjlkjlk4jwe408wfjidslfkdsjlfkj2408fjodskfjlsdfjlsdf" \
-d "grant_type=authorization_code" \
-d "client_id=asdflkjiwufhKDSJFkdsjf444f" \
-d "client_secret=sdafklsajdf4pfijpsdfklsf \
-d "redirect_uri=http://localhost/redirect"

access token 取得

上記のcodeを使いaccess tokenを取得します。

curl で 取得しようとするとなぜか Invalid Error になるので POST man を使いました。

※ヘッダー情報を画像と合わせてください

改行の混入などに注意してください。

{
    "token_type": "Bearer",
    "expires_in": 15552000,
    "access_token": "eyJ0ekasdjflasjdflkj34ifDJFi43f0dsjf043ifjdlkfj8dWHw"
}

このようにaccess tokenが帰ってきました。

User情報の取得

試しに Get User Info を使用して twitcasting_jp のアカウント情報を取得します。

curl -X GET "https://apiv2.twitcasting.tv/users/twitcasting_jp" \
-H "Accept: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Bearer eyJ0ekasdjflasjdflkj34ifDJFi43f0dsjf043ifjdlkfj8dWHw"
{
   "supporter_count":0,
   "supporting_count":0,
   "user":{
      "id":"182224938",
      "screen_id":"twitcasting_jp",
      "name":"ツイキャス公式",
      "image":"http://imagegw02.twitcasting.tv/image3s/pbs.twimg.com/profile_images/1285073394094891008/127zPO4f_bigger.jpg",
      "profile":"ツイキャスの公式アカウントです。ツイキャスに関するお知らせなどを投稿します。お問い合わせは https://t.co/4gCf7XVm7N までお願いします。",
      "level":50,
      "last_movie_id":"722475372",
      "is_live":false,
      "supporter_count":0,
      "supporting_count":0,
      "created"

このように正常に情報を取得できました。

webhook登録

次にwebhook を登録していきます。

base64変換

webhook は Bearer ではなく base64での認証をしなければいけない?のかな

なぜか Bearer ではできませんでした。

また、ClinetID と ClientSecret を使用してリクエストすることも可能です。 {ClientID}:{ClientSecret} をBase64エンコードした値を、 Authorization: Basic {BASE64_ENCODED_STRING} の形式で指定します。

Pythonでbase64コードを生成します。※変換前に clientID と clientSecret の間に 「:」コロンを挿入してください。鉤括弧は入れないでください。

import base64
print(base64.b64encode('459333sfff0546790bc90d515e82:10ad3f73e3b726sdfsd30bd412fd0d'.encode()))

生成したbase64コードを使いwebhook登録していきます。

webhook 登録

curlだとできなかったのでまたPOSTMANでリクエストしていきます。

user_id は get user info の apiで取得したものです。

ライブの配信開始時だけ受け取りたい場合は"liveend"を削除してください、逆も同じです。

   "user":{
      "id":"182224938", <----------------------これ
      "screen_id":"twitcasting_jp",
      "name":"ツイキャス公式",
      "image":"http://imagegw02.twitcasting.tv/image3s/pbs.twimg.com/profile_images/1285073394094891008/127zPO4f_bigger.jpg",
{
    "user_id": "182224938",
    "added_events": [
        "livestart",
        "liveend"
    ]
}

webhook list 確認

ちゃんと登録されているか確認します

curl -X GET "https://apiv2.twitcasting.tv/webhooks" \                  
-H "Accept: application/json" \
-H "X-Api-Version: 2.0" \
-H "Authorization: Basic NDU5MzMzMDU1fasdfasdfasr34fdsfdfsdfsfsdfsODFkMzBiZDQxMmZkMGQ="
{
   "all_count":2,
   "webhooks":[
      {
         "user_id":"182224938",
         "event":"livestart"
      },
      {
         "user_id":"182224938",
         "event":"liveend"
      },
   ]
}

ちゃんと登録したユーザーが表示されれば成功です。お疲れ様でした

webhook受け取りからの処理はまた別で書かせてください。

-Python