PhotonのVIVEPORT認証
概要
VIVEPORTは簡単にPhotonの認証プロバイダとして追加できます。
必要なものは、VIVEPORT AppIDとVIVEPORT AppSecretです。VIVEPORTコンテンツチーム(store@viveport.com)と連絡を取ってAppSecretを申請してください。このステップは自動化されていないので、申請は前もって行っておく必要があります。
サーバー設定
- 「deploy\NameServer\bin\NameServer.xml.config」を開きます。
- CustomAuthが有効化されている点を確認します。Enabledをtrueにする必要があります。
- 必要に応じて、任意でAllowAnonymousをtrueまたはfalseに設定します。
falseに設定することを推奨します。 - AuthenticationTypeを「3」に設定します。これは、VIVEPORT認証プロバイダータイプのコードです。
- 任意の名前を設定します。この例では「VIVEPORT」を使用しましたが、任意の名前に変更可能です。
- 「AuthUrl」は必須項目ですが、認証エンドポイントは内部的なもので不要なため空にしておきます。
- 以下に、その他のVIVEPORT特有の必須設定のリストとその説明を示します。
XML
<CustomAuth Enabled="true" AllowAnonymous="false">
<AuthProviders>
<AuthProvider Name="VIVEPORT"
AuthenticationType="10"
AuthUrl=""
appid="Replace with ID of your VIVEPORT app"
appsecret="Replace with Secret for your VIVEPORT app." />
</AuthProviders>
</CustomAuth>
クライアントコード
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を設定してください。