Agoraのトークン発行する(RTM/RTC)
はじめに
Agoraはチャットやビデオ通話を開発するための通信機能を提供するサービスです。
各プラットフォーム向けのライブラリとマニュアルが用意されています。
Agoraのアカウントを作成後、端末間の通信を始めるために トークン
を払い出します。
Nodeサーバでのトークン生成を調べました。
今回作りたいトークンは、以下です。
- Real-time Messaging(以下:RTM) Token
- Interactive Live Streaming(以下:RTC) Token
基本情報
トークンの種類
チャットやビデオ通話など複数の機能がありますが、サービスにあったトークンを発行する必要があります。
ここでは、
- チャットに必要な Real-time Messaging(以下:RTM) Token
- ビデオ通話に必要な Interactive Live Streaming(以下:RTC) Token
を作成します。
サイトが独特? Google検索から直接飛ぶ人は注意
ちょっと話がずれるのですが、私が混乱したので記載しておきます。
サイトのTOPから進めば問題ないですが、ググると別の機能についてのドキュメントが開くときがあります。
ドキュメントの切り替えは、ヘッダーから
↓↓ 展開すると
閑話休題
必要情報の確認や払い出しは console
↓↓ 別ページで開きます
トークンを作る
トークン払い出しに必要なIDを管理画面から取得
トークンを作るには、 App ID
と Certificate
が必要です。
ドキュメントにあるように
Project Management ページからApp ID
と Certificate
を有効化し取得します。
トークンをプログラムで作成しなくても使えるモードがあるのですが、
primary Certificate
を有効にするとトークンを払い出さないと動かなくなります。
Projectは複数作れるので、primaryを作らないProjectを作って分けることもできます。
RTM編:: トークン払い出しのプログラムを書く
基本ドキュメントに従って進めます。
RTM Tokens作成のドキュメント
まず、Githubに各言語で書かれたサンプルがあります。
プログラムに渡す変数はドキュメントのAPI referenceに書いてあります。
Nodeのプログラム
今回は、Nodeの項目を参考にしながら進めます。
まず、必要なライブラリを取得します
npm i agora-access-token
RTMトークン作成
管理画面で取得した App ID
Certificate
と、ユーザを識別する一意な値
を生成して与えることで、トークン生成できます。
ユーザを識別する一意な値
は一意で任意の文字列です。
const {RtcTokenBuilder, RtmTokenBuilder, RtcRole, RtmRole} = require('agora-access-token')
const appID = "970CA35de60c44645bbae8a215061b33";// <- App ID
const appCertificate = "5CFd2fd1755d40ecb72977518be15d3b";// <- Certificate
const account = `user_${Math.floor( Math.random() * 10**5 )}`;// ユーザごとに一意となる任意の文字列
const expirationTimeInSeconds = 60 * 60;// トークンの有効期間
const currentTimestamp = Math.floor(Date.now() / 1000);
const privilegeExpiredTs = currentTimestamp + expirationTimeInSeconds;
const token = RtmTokenBuilder.buildToken(appID, appCertificate, account, RtmRole, privilegeExpiredTs);
console.log("Rtm Token: " + token);// トークン出力完了!
console.log("account: " + account);// account
出力されたトークンが使用できるか
正常なトークンが生成できているか、確認ページで確認します。
RTC編:: トークン払い出しのプログラムを書く
基本ドキュメントに従って進めます。
RTC Tokens作成のドキュメント
プログラムに渡す変数はドキュメントのAPI referenceに書いてあります。
トークンを作るには、 App ID
と Certificate
以外に、ユーザ識別のユニークな値
・ チャンネル名
・ ユーザ権限
・ トークンの有効期間
が必要です。
ユーザ識別のユニークな値
は、account
か uid
を選べます。
どちらでも、大きな違いはなさそうです。ここでは、accountで作成します。
ユーザ識別のユニークな値
とチャンネル名
は一意で任意の文字列です。
ユーザ権限
- PUBLISHER(=1) : 公開権限あり
- SUBSCRIBER(=2): 公開権限なし
があります。
Nodeのプログラム
今回は、Nodeの項目を参考にしながら進めます。
まず、必要なライブラリを取得します
npm i agora-access-token
RTCトークン作成
const RtcTokenBuilder = require('agora-access-token').RtcTokenBuilder;
const RtcRole = require('agora-access-token').RtcRole;
const appID = "970CA35de60c44645bbae8a215061b33";// <- App ID
const appCertificate = "5CFd2fd1755d40ecb72977518be15d3b";// <- Certificate
const channelName = '7d72365eb983485397e3e3f9d460bdda';// <- ユーザが所属するチャンネル名(任意の文字列)
const account = `user_${Math.floor( Math.random() * 10**5 )}`;// ユーザごとに一意となる任意の文字列
const role = RtcRole.PUBLISHER;//トークンの権限 RtcRole.PUBLISHER or RtcRole.SUBSCRIBER
const expirationTimeInSeconds = 60 * 60;// トークンの有効期間
const currentTimestamp = Math.floor(Date.now() / 1000);
const privilegeExpiredTs = currentTimestamp + expirationTimeInSeconds;
// Build token with user account
const token = RtcTokenBuilder.buildTokenWithAccount(appID, appCertificate, channelName, account, role, privilegeExpiredTs);
console.log("Rtc Token: " + token);// トークン出力完了!
console.log("account: " + account);// account
console.log("channelName: " + channelName);// channelName
出力されたトークンが使用できるか
正常なトークンが生成できているか、確認ページで確認します。
おまけ
Agora公式のサービスデモサイト一覧
以上です。
Discussion