This document is about: PUN 2
SWITCH TO

PUN Classic (v1)、PUN 2 和 Bolt 處於維護模式。 PUN 2 將支援 Unity 2019 至 2022,但不會添加新功能。 當然,您所有的 PUN & Bolt 專案可以用已知性能繼續運行使用。 對於任何即將開始或新的專案:請切換到 Photon Fusion 或 Quantum。

Photon VIVEPORT Authentication

概述

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

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

應用程序設置

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

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

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

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

客戶端代碼

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

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

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