メインコンテンツまでスキップ

Set up Oculus as an Identity Provider

Last updated on November 23, 2023

概要

このガイドは、検証済みの Oculus デベロッパーが Oculus アカウントを AccelByte Gaming Services (AGS)に接続することを支援するためのものです。場合によっては、Oculus サービス内の追加機能を設定する必要があります。ここにはその機能を記載していません。Oculus サービスの設定の詳細については、Oculus 担当者にお問い合わせいただき、また Oculus のドキュメントを確認されることをお勧めします。

AccelByte デベロッパーパートナーマネージャーからリクエストできる機密ガイド資料をご用意しています。

目標

AccelByte Game SDK を使用して、ゲームの Oculus 認証方法を有効化する。

前提条件

  • 検証済みの Oculus 開発者アカウント。
  • Unreal Engine をご利用の場合は、プラグインで OnlineSubsystem Oculus をアクティベートする必要があります。
  • Unityを使用している場合は、Oculus Unity統合:Unityアセットストア を実行する必要があります。
  • 認証を設定し、権限を管理する AccelByte 管理者ポータルアカウント。
  • ゲームの名前空間。
  • AccelByte Game SDK をインポートしたUnityまたはUnrealゲームプロジェクト。
  • 最新版の AccelByte Unity SDK またはUnreal SDK。
  • AccelByte IAM クライアントに精通していること。

Oculus Meta の設定

Oculus Meta アプリケーションの設定

アプリページの作成ガイド に従って、Oculus 開発者アカウントで Oculus Meta アプリケーションを設定します。

Oculus Meta リクエストプラットフォーム機能

アプリケーションの作成が完了したら、データ使用状況の確認 をリクエストし、ユーザー ID、ユーザープロファイル、アバターといったユーザーデータへのアクセス権を得ます。DUC ガイドの送信 の指示に従ってください。

注記

Oculus 開発者ポータルでの設定に問題がある場合は、カスタマーサポートに連絡して AccelByte からガイドを入手してください。

Oculus SDK のゲーム内ログインの設定

Oculus アカウントでログインするには、ログイン方法を設定する必要があります。ゲーム内で Oculus ログインを設定し、プレイヤーが Oculus アカウントでサインインできるようにするには、次の手順に従ってください。

  1. AccelByte 管理者ポータルにログインし、ゲームの名前空間を選択します。[User Management (ユーザー管理)]サイドバーの下にある [Login Method (ログイン方法)]をクリックし、右側の[+ Add New (+新規を追加)]をクリックします。 AccelByte Admin Portal Login

  2. Oculus SDK]をクリックします。 Oculus SDK

  3. Create Configuration (設定を作成)]ポップアップが表示されます。Oculusで、[Client ID (クライアント ID)]フィールドに[App ID (アプリ ID)]を入力し、 [App Secret (アプリの秘密)]フィールドに[Client Secret (クライアントの秘密)]を入力します。 Oculus SDK Create Configuration

  4. システムにより詳細ページにリダイレクトされます。Oculus をアクティベートして使用します。 Activate Oculus SDK

IAM クライアントの作成

IAM クライアントとは、ターゲットプラットフォームでリリースしたいゲームクライアントのことです。IAM クライアントを使用すると、 ゲームクライアントは適切な権限で、保護された AGS リソースへのアクセスを要求できます。

  1. Platform Configurations (プラットフォーム設定)]に移動し、次に[IAM Clients (IAM クライアント)]に移動します。

    IAM clients

  2. + Create New (+新規作成)]をクリックして、新しいIAM クライアントを作成します。

    Create IAM client

    a. [Client Type (クライアントタイプ)]フィールドに[Confidential (機密)]と入力します。[Confidential (機密)]タイプを使用することをお勧めします。 なぜなら、AccelByte Gaming Services リソースにアクセスするために、場合によっては後でいくつかの権限を追加する必要があり、 その場合[Public (公開)]タイプを使用していると適切なセキュリティが利用できないためです。

    b. [Secret (秘密)]フィールドに入力します。自分で秘密を入力するか、 [Generate Client Secret (クライアントの秘密を生成)]をクリックすると、秘密鍵を生成できます。

    危険

    この作成ステップの後、クライアントの秘密は表示されません。ゲームの設定時に必要になるため、 確実に秘密をコピーして保存します。

    c. [Client Name (クライアント名)]に<game name> <target platform>といった特定の名前を入力します。

    d. ゲームの[Namespace (名前空間)]を選択します。

    e. [Scopes (スコープ)]フィールドはデフォルト値のままにします。

    f. [*Redirect URI (リダイレクト URI)]フィールドはゲームクライアントのビルド**用であるため、http://127.0.0.1を入力します。

    g. [Target Audience (ターゲットオーディエンス)]と[Base URI (ベー スURI)]フィールドは空白のままにします。

    h. IAM クライアントは[Description (説明)]フィールドに記述できます。

    j.[SDK Configuration (SDK 設定)]の[Platform Input (プラットフォーム入力)]フィールドは、ゲームがビルドされるターゲットプラットフォームです。

    k. [Advanced Configuration (高度な設定)]フィールドは、二要素認証や有効期限の上書きなどの追加機能で 構成されています。これはゲームクライアントのビルド用なので、デフォルト/無効のままでかまいません。

    IAM client configuration

    IAM client configuration

    注記

    システムはクライアント ID を生成します。それをコピーして、ゲームビルドの SDK 設定で使用できます。

  3. システムにより[Client Detail (クライアントの詳細)]ページにリダイレクトされます。必要な権限を設定します。 権限の詳細については、IAM クライアントの権限についてのドキュメントを参照してください。

IAM Client detail

IAM Client detail

ゲーム内ログインの指示

各ゲームエンジンの設定は異なっているので、利用可能なタブから適切なものを選択します。

Unrealゲーム内ログインの統合

Oculus を統合して AccelByte SDK でサインインし、プレイヤーが Oculus 認証情報でゲームにログインできるように することが可能です。

Unrealの準備と設定

依存関係の追加

最初に OnlineSubsystemOnlineSubsystemOculusLibOvrPlatform という名前の公開依存関係モジュールを Build.cs ファイルに追加します。これらの依存関係は、プロジェクトがUnreal Engine の Oculus オンラインサブシステムを使用するために 必要です。

public ABThirdPartyLogin(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "OnlineSubsystem", "OnlineSubsystemUtils",
"OnlineSubsystemOculus","LibOVRPlatform",
"Sockets", "Networking", "InputCore", "AccelByteUe4Sdk", "Json", "JsonUtilities", "Http", "WebSockets"
});

PrivateDependencyModuleNames.AddRange(new string[] { });
PrivateDependencyModuleNames.Add("OnlineSubsystem");

また、TutorialProject.Target.csTutorialProjectEditor.Target.cs の中に OnlineSubsystemOculus を追加する必要があります。

public ABThirdPartyLoginTarget( TargetInfo Target) : base(Target)
{
Type = TargetType.Game;
DefaultBuildSettings = BuildSettingsVersion.V2;
ExtraModuleNames.AddRange( new string[] { "ABThirdPartyLogin", "OnlineSubsystem", "AccelByteUe4Sdk", "OnlineSubsystemOculus" } );
}
public ABThirdPartyLoginEditorTarget( TargetInfo Target) : base(Target)
{
Type = TargetType.Editor;
DefaultBuildSettings = BuildSettingsVersion.V2;
ExtraModuleNames.AddRange( new string[] { "ABThirdPartyLogin", "OnlineSubsystem", "AccelByteUe4Sdk", "OnlineSubsystemOculus" } );
}

Oculus のUnreal Engine プロジェクト設定

DefaultEngine.ini ファイルの中に、Oculus 設定のための変数をいくつか追加する必要があります。プロジェクトを開くには、この 設定が必要です。デフォルトでは、Oculus は自動的に起動します。Rift アプリを開発する場合は、RiftAppId=[YourAppId] を 使用していることを確認してください。それ以外の場合は、OculusAppId=[YourAppId] を使用できます。

[OnlineSubsystem]
DefaultPlatformService=Oculus

[OnlineSubsystemOculus]
bEnabled=true
RiftAppId=[YourAppId]

Unrealサンプルコードの実装

Oculus ログイン統合を SDK でゲームに統合する方法について説明します。当社のロジックは、プレイヤーが Oculus でログインした時に そのログインを上書きし、当社のプラットフォームを使用して SDK がアクセスできるサービスを提供することです。

このプロジェクトでは Oculus をプラットフォームとして使用しているため、プレイヤーは Oculus の認証情報でログインできます。

  1. Oculus がエンタイトルメントパスを実行したら、必ずオンラインアイデンティティ関数を呼び出して platform_tokens を取得してください。
const IOnlineSubsystem* OnlineSubsystem = IOnlineSubsystem::Get();
if (OnlineSubsystem == nullptr)
{
FString Message = TEXT("Cannot login with no online subsystem set!");
UE_LOG(LogTemp, Warning, TEXT("%s"), *Message);
OnActionInfoUpdated.Broadcast(Message);
return;
}

const IOnlineIdentityPtr OnlineIdentity = OnlineSubsystem->GetIdentityInterface();
if (!OnlineIdentity.IsValid())
{
FString Message = TEXT("Could not retrieve identity interface from native subsystem.");
UE_LOG(LogTemp, Warning, TEXT("%s"), *Message);
OnActionInfoUpdated.Broadcast(Message);
return;
}
  1. platform_token を取得すると、システムはトークンを使用して Accelbyte loginWithOtherPlatform API を呼び出します。 コードは次のようになります。
const FOnLoginCompleteDelegate NativeLoginComplete = FOnLoginCompleteDelegate::CreateLambda([=]
(int32 LocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, const FString& Error) {
UE_LOG(LogTemp, Warning, TEXT("OnLoginComplete %s : %s"), bWasSuccessful ? TEXT("Success") : TEXT("Fail"), *Error);
FString Message = FString::Printf(TEXT("OnLoginComplete %s : %s"), bWasSuccessful ? TEXT("Success") : TEXT("Fail"), *Error);
OnActionInfoUpdated.Broadcast(Message);

if (bWasSuccessful)
{
auto OculusUserId = OnlineIdentity->GetUniquePlayerId(0);
auto GenAuth = OnlineIdentity->GetAuthToken(LocalPlayer->GetControllerId());
const FString PlatformToken = (TEXT("%s:%s"), OculusUserId, GenAuth);
UE_LOG(LogTemp, Warning, TEXT("PlatformToken : %s"), *PlatformToken);
OnActionInfoUpdated.Broadcast(FString::Printf(TEXT("PlatformToken : %s"), *PlatformToken));

FRegistry::User.LoginWithOtherPlatform(EAccelBytePlatformType::PS5, PlatformToken, OnLoginSuccessDelegate, OnLoginErrorDelegate);
UE_LOG(LogTemp, Warning, TEXT("Request LoginWithOtherPlatform"));
OnActionInfoUpdated.Broadcast(TEXT("Request LoginWithOtherPlatform"));
}
});
OnlineIdentity->AddOnLoginCompleteDelegate_Handle(LocalPlayer->GetControllerId(), NativeLoginComplete);
const bool bWaitForDelegate = OnlineIdentity->Login(LocalPlayer->GetControllerId(), FOnlineAccountCredentials());
if (!bWaitForDelegate)
{
FString Message = TEXT("The online subsystem couldn't login");
UE_LOG(LogTemp, Warning, TEXT("%s"), *Message);
OnActionInfoUpdated.Broadcast(Message);
}

コードEAccelBytePlatformType::Oculusで適切なプラットフォームを呼び出していることを確認してください。

FRegistry::User.LoginWithOtherPlatform(EAccelBytePlatformType::Oculus, PlatformToken, OnLoginSuccessDelegate, OnLoginErrorDelegate);

サンプルコードのテスト

起動引数

エディタで実行してプロジェクトを起動するか、コマンドプロンプトまたは Powershell でこの実行可能コマンドを使用します。

"[[PathToUE5Folder]]\Epic Games\UE_5.0\Engine\Binaries\Win64\UnrealEditor.exe]" "[PathToProjectFolder]\TestingUnreal\ABThirdPartyLogin\ABThirdPartyLogin.uproject" -skipcompile -game

以下の画像は、Oculus アカウントを使用して当社のテストアプリに正常にログインしたことを示しています。 Unreal Code Testing