PUN Classic (also called PUN1) is the original and first major version of PUN. It is now replaced by PUN2 which is refactored and enhanced. We highly recommend starting new projects with PUN2 and if possible migrating existing ones from PUN1 to PUN2 by following our "Migration Notes". PUN Classic will be maintained for the coming months. We will fix important bugs and support new Unity versions but new features will be added only to PUN2.

PhotonのVIVEPORT認証

Contents

概要

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

必要なものは、VIVEPORT AppIDとVIVEPORT AppSecretです。VIVEPORTコンテンツチーム(store@viveport.com)と連絡を取ってAppSecretを申請してください。このステップは自動化されていないので、申請は前もって行っておく必要があります。

Back To Top

アプリケーション設定

まずはじめに、 PhotonアプリケーションのダッシュボードでVIVEPORT認証を設定しておきます。

アプリケーションの「管理」ページで画面を下にスクロールし「認証」セクションを表示します。1クリックで「HTC VIVE」認証のプロバイダの追加・編集ができます。以下の2つを用意してください。

  • appid: お持ちのVIVEPORTアプリケーションのID
  • appsecret: お持ちのVIVEPORTアプリケーションのSecret

VIVEPORT AppIdはVIVEPORTディベロッパーコンソールで取得します。アプリケーションを選択して「VIVEPORT Listing」ページを開きます。AppSecretの申請はVIVEPORTコンテンツチームと連絡をとってください。

Back To Top

クライアントコード

PhotonはVIVEPORTのユーザーを、 VIVEPORT APIより提供される一時トークンで認証します。

VIVEPORT SDKをダウンロードして、Unityパッケージをzipからプロジェクトにインポートします。

Back To Top

VIVEPORTトークンを取得する

Photonに接続する前に、クライアントはVIVEPORTにログインしてセッショントークンを取得する必要があります。 以下のワークフローは、必須手順のまとめです。コード全体はVIVEPORT SDK内のVIVEPORTDemo.csでご覧ください。

VIVEPORTではよくあることですが、まずはじめにVIVEPORT AppIdを使ってAPIの初期化を行います。

//...

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を呼び出します。

//...

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ユーザーの証しとなります。

//...

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);
        }
    }
}

Back To Top

認証

ViveSessionTokenはPhotonのVIVEPORT認証に必要な唯一の値です。

必ずCustomAuthenticationType.Viveportを使用し、「userToken」にAuthParameterを設定してください。

//...

    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.");
    }

//...

To Document Top