This document is about: PUN 2
SWITCH TO

PUN Classic (v1)、PUN 2、Boltはメンテナンスモードとなっております。Unity2022についてはPUN 2でサポートいたしますが、新機能が追加されることはありません。お客様のPUNプロジェクトおよびBoltプロジェクトが停止することはなく、将来にわたってパフォーマンス性能が落ちることはありません。 今後の新しいプロジェクトについては、Photon FusionまたはQuantumへ切り替えていただくようよろしくお願いいたします。

PhotonのVIVEPORT認証

概要

VIVEPORTは簡単にPhotonの認証プロバイダとして追加できます。

必要なものは、VIVEPORT AppIDとVIVEPORT AppSecretです。VIVEPORTコンテンツチーム(store@viveport.com)と連絡を取って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を設定してください。

C#

//...

    if (PhotonNetwork.AuthValues == null)
    {
        PhotonNetwork.AuthValues = new AuthenticationValues();
    }

    PhotonNetwork.AuthValues.AuthType = CustomAuthenticationType.Viveport;
    PhotonNetwork.AuthValues.AddAuthParameter("userToken", ViveSessionToken);
    // do not set AuthValues.Token or authentication will fail
    if (!PhotonNetwork.ConnectUsingSettings())
    {
        Debug.LogWarning("Could not PhotonNetwork.ConnectUsingSettings(). Check settings.");
    }

//...
Back to top