Photon VIVEPORT Authentication
概述
添加VIVEPORT作為Photon認証供應商很容易。
您將需要一個VIVEPORT的AppId和一個VIVEPORT的AppSecret。請聯系VIVEPORT內容團隊([email protected])申請AppSecret。由於這一個步驟不是自動化的,所以要提前開始這個過程。
應用程序設置
作為第一步,您應該在Photon應用程序介面中設置VIVEPORT認証。
進入應用程序的 "管理 "頁面,向下滑動到 "認証 "部分。
只需點擊一下,您就可以添加或編輯 "HTC Vive "認証提供者。您將需要:
- appid:您的VIVEPORT應用程序的ID。
- appsecret:您的VIVEPORT應用機密。
VIVEPORT應用程序的ID可以在VIVEPORT開發者控制台中找到。選擇您的應用程序並打開 "VIVEPORT列表 "頁面。
您必須聯系VIVEPORT內容團隊([email protected])來申請一個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#
AuthenticationValues authValues = new AuthenticationValues();
authValues.AuthType = CustomAuthenticationType.Viveport;
authValues.AddAuthParameter("userToken", ViveSessionToken);
// do not set authValues.Token or authentication will fail
chatClient.Connect(chatAppId, chatAppVersion, authValues);