PhotonのVIVEPORT認証
概要
VIVEPORTは簡単にPhotonの認証プロバイダとして追加できます。
必要なものは、VIVEPORT AppIDとVIVEPORT AppSecretです。VIVEPORTコンテンツチーム([email protected])と連絡を取ってAppSecretを申請してください。このステップは自動化されていないので、申請は前もって行っておく必要があります。
アプリケーション設定
まずはじめに、 PhotonアプリケーションのダッシュボードでVIVEPORT認証を設定しておきます。
アプリケーションの「管理」ページで画面を下にスクロールし「認証」セクションを表示します。1クリックで「HTC VIVE」認証のプロバイダの追加・編集ができます。以下の2つを用意してください。
- appid: お持ちのVIVEPORTアプリケーションのID
- appsecret: お持ちのVIVEPORTアプリケーションのSecret
VIVEPORT AppIdはVIVEPORTディベロッパーコンソールで取得します。アプリケーションを選択して「VIVEPORT Listing」ページを開きます。AppSecretの申請はVIVEPORTコンテンツチームと連絡をとってください。
クライアントコード
PhotonはVIVEPORTのユーザーを、 VIVEPORT APIより提供される一時トークンで認証します。
VIVEPORT SDKをダウンロードして、Unityパッケージをzipからプロジェクトにインポートします。
VIVEPORTトークンを取得する
Photonに接続する前に、クライアントはVIVEPORTにログインしてセッショントークンを取得する必要があります。
以下のワークフローは、必須手順のまとめです。コード全体はVIVEPORT SDK内のVIVEPORTDemo.csでご覧ください。
VIVEPORTではよくあることですが、まずはじめにVIVEPORT AppIdを使ってAPIの初期化を行います。
C#
//...
Api.Init(InitStatusHandler, APP_ID);
//...
private static void InitStatusHandler(int nResult)
{
    if (nResult == 0)
    {
        bInit = true;
        bIsReady = false;
        ViveSessionToken = string.Empty;
        bArcadeIsReady = false;
        Viveport.Core.Logger.Log("InitStatusHandler is successful");
    }
    else
    {
        // Init error, close your app and make sure your app ID is correct or not.
        bInit = false;
        Viveport.Core.Logger.Log("InitStatusHandler error : " + nResult);
    }
}
//...
初期化(例: InitStatusHandler())をしたら、トークンの準備ができているか確認します。以下のようにViveport.Token.IsReadyを呼び出します。
C#
//...
Token.IsReady(IsTokenReadyHandler);
//...
private static void IsTokenReadyHandler(int nResult)
{
    if (nResult == 0)
    {
        bTokenIsReady = true;
        Viveport.Core.Logger.Log("IsTokenReadyHandler is successful");
    }
    else
    {
        bTokenIsReady = false;
        Viveport.Core.Logger.Log("IsTokenReadyHandler error: " + nResult);
    }
}
//...
これで、クライアントがセッショントークンを取得できるようになりました。有効なVIVEPORTユーザーの証しとなります。
C#
//...
Token.GetSessionToken(GetSessionTokenHandler);
//...
private static void GetSessionTokenHandler(int nResult, string message)
{
    if (nResult == 0)
    {
        Viveport.Core.Logger.Log("GetSessionTokenHandler is successful, token:" + message);
        // Photon:
        // With the viveport token, we can set the auth values for Photon and connect / auth.
        // We store the token for later use.
        ViveSessionToken = message;
    }
    else
    {
        if (message.Length != 0)
        {
            Viveport.Core.Logger.Log("GetSessionTokenHandler error: " + nResult + ", message:" + message);
        }
        else
        {
            Viveport.Core.Logger.Log("GetSessionTokenHandler error: " + nResult);
        }
    }
}
認証
ViveSessionTokenはPhotonのVIVEPORT認証に必要な唯一の値です。
必ずCustomAuthenticationType.Viveportを使用し、「userToken」にAuthParameterを設定してください。