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 Oculus認証

Contents

アプリケーションのセットアップ

Oculusは認証プロバイダとして簡単に追加でき、 追加はPhotonアプリケーションのダッシュボードから数秒で設定できます。

アプリケーションの「管理」ページに進み、「認証」セクションにスクロールダウンしてください。 新たな認証プロバイダをOculusに追加する場合、または既存の認証プロバイダを編集する場合には、以下の設定が必須です:

  • appid: OculusアプリケーションのIDです。
  • appsecret: Oculusアプリケーションの秘密です。

Back To Top

クライアントコード

Oculusはユーザーを、Oculus IDとクライアントに提供されるノンスで認証しています。 暗号法では、ノンスは1回のみ使用可能な乱数です。 詳細はこちらを参照してください。

Back To Top

証明書を取得

クライアントはまずOculusにログインし、ノンスを生成する必要があります。 このノンスは、そのクライアントが有効なOculusユーザーであることの証明です。

Oculus SDKはOculusのウェブサイトから取得してください。

Back To Top

Unityのインストラクション

Unity用のOculusプラットフォームSDKをダウンロードして、プロジェクトにインポートしてください。

エディターのメニューバーから「Oculusプラットフォーム」へ進み -> 「設定の編集」でOculus AppIDを入力してください。

以下のコードを使用してログイン済みのユーザーのOculus IDを取得し、ノンスを生成します:

using UnityEngine;
using Oculus.Platform;
using Oculus.Platform.Models;

public class OculusAuth : MonoBehaviour
{
    private string oculusId;

    private void Start()
    {
        Core.AsyncInitialize().OnComplete(OnInitializationCallback);
    }

    private void OnInitializationCallback(Message<PlatformInitialize> msg)
    {
        if (msg.IsError)
        {
            Debug.LogErrorFormat("Oculus: Error during initialization. Error Message: {0}",
                msg.GetError().Message);
        }
        else
        {
            Entitlements.IsUserEntitledToApplication().OnComplete(OnIsEntitledCallback);
        }
    }

    private void OnIsEntitledCallback(Message msg)
    {
        if (msg.IsError)
        {
            Debug.LogErrorFormat("Oculus: Error verifying the user is entitled to the application. Error Message: {0}",
                msg.GetError().Message);
        }
        else
        {
            GetLoggedInUser();
        }
    }

    private void GetLoggedInUser()
    {
        Users.GetLoggedInUser().OnComplete(OnLoggedInUserCallback);
    }

    private void OnLoggedInUserCallback(Message<User> msg)
    {
        if (msg.IsError)
        {
            Debug.LogErrorFormat("Oculus: Error getting logged in user. Error Message: {0}",
                msg.GetError().Message);
        }
        else
        {
            oculusId = msg.Data.ID.ToString(); // do not use msg.Data.OculusID;
            GetUserProof();
        }
    }

    private void GetUserProof()
    {
        Users.GetUserProof().OnComplete(OnUserProofCallback);
    }

    private void OnUserProofCallback(Message<UserProof> msg)
    {
        if (msg.IsError)
        {
            Debug.LogErrorFormat("Oculus: Error getting user proof. Error Message: {0}",
                msg.GetError().Message);
        }
        else
        {
            string oculusNonce = msg.Data.Value;
            // Photon Authentication can be done here
        }
    }
}

Back To Top

認証

クライアントはOculus IDを送信し、それぞれのキー「userid」と「nonce」を使用して文字列パラメータであるノンスを生成する必要があります。

PhotonNetwork.AuthValues = new AuthenticationValues();
PhotonNetwork.AuthValues.AuthType = CustomAuthenticationType.Oculus;
PhotonNetwork.AuthValues.AddAuthParameter("userid", oculusId);
PhotonNetwork.AuthValues.AddAuthParameter("nonce", oculusNonce);
// do not set AuthValues.Token or authentication will fail
// connect

To Document Top