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 Authentication

Contents

概述

添加VIVEPORT作為Photon認証供應商很容易。

您將需要一個VIVEPORT的AppId和一個VIVEPORT的AppSecret。請聯系VIVEPORT內容團隊(store@viveport.com)申請AppSecret。由於這一個步驟不是自動化的,所以要提前開始這個過程。

Back To Top

應用程序設置

作為第一步,您應該在Photon應用程序介面中設置VIVEPORT認証。

進入應用程序的 "管理 "頁面,向下滑動到 "認証 "部分。 只需點擊一下,您就可以添加或編輯 "HTC Vive "認証提供者。您將需要:

  • appid:您的VIVEPORT應用程序的ID。
  • appsecret:您的VIVEPORT應用機密。

VIVEPORT應用程序的ID可以在VIVEPORT開發者控制台中找到。選擇您的應用程序並打開 "VIVEPORT列表 "頁面。 您必須聯系VIVEPORT內容團隊(store@viveport.com)來申請一個AppSecret。

Back To Top

客戶端代碼

Photon用一個臨時令牌來驗証VIVEPORT的用戶,該令牌由VIVEPORT API提供。

下載VIVEPORT SDK並從壓縮包中導入Unity包到您的項目中。

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 PhotonNetwork.AuthValues.Token or authentication will fail
    if (!PhotonNetwork.ConnectUsingSettings())
    {
        Debug.LogWarning("Could not PhotonNetwork.ConnectUsingSettings(). Check settings.");
    }

//...


To Document Top