配信/視聴をユーザーごとに制限する

Castify でのライブ配信や視聴は、デフォルトの状態では認証されず、 API キーさえ知っていれば、誰でも自由にそれらのアクションを行うことができます。

ですが、一般的なアプリケーションにおいては、配信はチャンネルオーナーなどの特定の権限を持つ人に限定し、 また、視聴に関しても、例えば、チケット購入済みの人や、ファンクラブに加入済みの人など、 特定の条件に合致する人にのみに制限したいという要件があると思います。

Castify では、以下のように Webhook と カスタムデータ の仕組みを利用することで、 特定の条件を満たしたユーザーにのみアクションを許可するように構成することができます。

このドキュメントでは、配信/視聴のユーザー制限の方法について、サンプルコードを含めて解説します。

1. 配信/視聴リクエストに、ユーザーを認証できるカスタムデータを追加する

配信

iOS

Broadcaster のコンストラクターのパラメーター customData に認証情報を渡します。

// Assuming that "castifyApp" is of the "CastifyApp" class.
let broadcaster = Broadcaster(castifyApp, customData: userCredential)

視聴

Web

Sourceval パラメータに、ユーザーを認証できる値を格納します。 ここで指定した値は、Webhook エンドポイントに通知されます。

player.source = new Source(broadcastId, {
  key: "SomeUserID",
  val: someUserSessionValue
})

iOS

player.source = Source(castifyApp, broadcast: broadcastId, options: .init(
  key: "SomeUserID",
  val: someUserSessionValue
))

2. カスタムデータの内容をチェックし、認証情報が不正な場合はエラーを返す Webhook エンドポイントを作成する

サービスのアプリケーションサーバに、以下のような処理を行う Webhook のエンドポイントを作成します。 ここでは PHP の実装例を掲載しますが、もちろん何の言語で作成しても構いません。

<?php

$body = json_decode(file_get_contents("php://input"));

if (!$body) {
  throw new Exception("Failed to parse a request body.");
}

if (!is_valid_credential($body["request"]["customData"])) {
  return '{"kind": "reject"}'
}

return '{"kind": "accept"}'

function is_valid_credential(string $customData) {
  if (!$customData) {
    return false;
  }
  // TODO ユーザーのセッションの有効性や、そのユーザーに紐づく権限のチェック
  return true;
}

このエンドポイントの詳細は、以下の Webhook リファレンスをご覧ください。

3. Webhook エンドポイントを Castify コンソールで登録する

あとは、作成した Webhook エンドポイントと Castify を接続するだけです。 登録方法は Webhook でイベントを受信する をご覧ください。

登録が完了したら、サーバーのアクセスログを確認しつつ、配信/視聴を試みてください。 Castify から Webhook エンドポイントの呼び出しが行われていれば成功です。 後は送信する値を追加したり、Webhook 内の判定の処理を変更したりして、 サービスに適した制限を実装していけば完了です。

合わせて読みたい

最終更新日: