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

Set up Epic as an Identity Provider

Last updated on November 23, 2023

概要

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

目標

  • AccelByte Game SDK で、ゲームの Epic 認証方法を有効化する。
  • AccelByte プレイヤーポータルで、パブリッシャーウェブサイトの Epic 認証方法を有効化する。

前提条件

  • Epic デベロッパーアカウントを所有しておきます。
  • Unreal Engine をご利用の場合は、UE バージョン 4.27 または 5.0 をインストールする必要があります。
  • Unityを使用している場合は、PlayEveryWare/eos_plugin_for_unity が必要です。
  • 認証を設定し、権限を管理する AccelByte 管理者ポータルアカウントを所有しておきます。
  • まだ設定していない場合は、プレイヤーポータルlとランチャーにパブリッシャーの名前空間を設定します。次に、ゲームに対し、ゲームの名前空間を設定します。
  • プレイヤーポータルを所有しておきます。
  • AccelByte Game SDK をインポートしたUnityまたはUnrealゲームプロジェクトを所有しておきます。
  • 最新版の AccelByte Unity SDK またはUnreal SDK を入手します。
  • AccelByte IAM クライアントに精通しておきます。

Epic 製品の設定

組織の作成

デベロッパーアカウント下の組織 を所有し、それに検証済みドメインを追加する必要があります。

注記

Epic ではドメインの検証に時間がかかります。

製品ブランドの設定

製品のブランド設定、権限、リンクしたクライアントを設定します。EOS Epic アカウントサービスガイドの設定方法 の指示に従ってください。

  • ブランド設定には検証済みドメインが必要です。どれか 1 つが足りなくとも、それなしで続行できますが、プレイヤーはログイン時に警告メッセージを受け取ります。
  • 権限の設定では、Basic Profile、Online Presence、Friends List を有効にする必要があります。
  • リンクしたクライアントの設定では、以前に作成したクライアントを選択します。
注記

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

Epic Games 認証の設定

Epic Games SDK ログインの設定

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

    AccelByte Admin Portal Login

  2. Epic Games]をクリックします。

    Epic Games login

  3. Client ID (クライアント ID)]と[Client Secret (クライアントの秘密)]に Epic Games Dev Portal の認証情報を入力します。[Redirect URI (リダイレクト URI)]にベース URL http://127.0.0.1を入力し、[Create (作成)]ボタンをクリックします。

    Epic Create Configuration

  4. アクティベートします。

    Activate Epic

IAM クライアントの作成

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

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

    IAM clients

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

    Create IAM client

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

    b.[Secret (秘密)]を入力します。許容される形式で秘密を入力するか、[Generate Client Secret (クライアントの秘密を生成)]オプションをクリックすれば、秘密鍵を生成できます。

    危険

    この作成ステップの後、クライアントの秘密は表示されませんので、その値をコピーして保存してください。ゲームの設定時に必要になります。

    c.[Client Name (クライアント名)]を入力します。この IAM クライアントは Epic プラットフォームに固有であるため、<game name> steam buildのような特定の名前を名付けます。

    d.特定のゲームの名前空間を選択します。

    e.[Scopes (スコープ)]はデフォルトのままでかまいません。

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

    g.[Target Audience (ターゲットオーディエンス)]は空白のままでかまいません。

    h.[BASE URI (ベース URI)]も空白のままでかまいません。

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

    j.SDK 設定の[Platform Input (プラットフォーム入力)]とは、ゲームをビルドするためのターゲットプラットフォームのことです。ここでは[Epic]に設定します。

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

    IAM client configuration

    IAM client configuration

    注記

    クライアント ID は既に生成されていて、コピーできます。後ほどゲームをビルドする際に、SDK 設定でクライアント ID を使用できます。

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

    Steam game details

    Steam game details

Unityゲーム内ログイン統合

Epic ゲームを統合して AccelByte SDK でサインインすれば、プレイヤーは Epic 認証情報を使用してログインできます。

Unityの準備と設定

AccelByte Gaming Services のUnityプロジェクト設定

AccelByte SDK をプロジェクトで正しく実行するには、AccelByte 管理者ポータルで以前に作成した値を入力し、以下の各手順を実行する必要があります。

  1. ゲームクライアント設定用の、AccelByteSDKConfig.jsonという名前のファイルを作成します。

  2. AccelByteSDKConfig.json ファイルをコピーし、[Assets/Resource (アセット/リソース)]ディレクトリのUnityプロジェクトディレクトリに追加します。

  3. ゲームに基づく情報を使用してAccelByteSDKConfig.jsonファイルに入力します。JSON ファイルの例を以下に示します。

{ 
"Default": {
"Namespace": "<Your Game Namespace>",
"UsePlayerPrefs": true,//It will use Player Preferences
"EnableDebugLog": true,//Enable Debug Logging
"DebugLogFilter": "Log",//Type of Debug Log
"BaseUrl": "https://demo.accelbyte.io",
"RedirectUri": "http://127.0.0.1",
"AppId": "<Your AppId>",
"PublisherNamespace": "<Your Publisher Namespace>"
}
}
  1. AccelByteServerSDKConfig.jsonという名前のファイルを作成し、[Assets/Resource (アセット/リソース)]ディレクトリ内のUnityプロジェクトディレクトリに追加します。

  2. 以下のコードでAccelByteServerSDKConfig.jsonを更新します。これはゲームサーバーの設定に使用します。JSON ファイルの例を以下に示します。

{
"Default": {
"Namespace": "Default",
"BaseUrl": "",
"RedirectUri": "http://127.0.0.1"
}
}
  1. AccelByteSDKOAuthConfig.jsonAccelByteServerSDKOAuthConfig.jsonという名前の 2 つのファイルを作成します。この両ファイルを[Assets/Resources (アセット/リソース)]ディレクトリの Unity プロジェクトディレクトリに追加します。これらの両 JSON ファイルの内容は次のとおりです。
{
"Default": {
"ClientId": "<Your IAM Client ID>",
"ClientSecret": "<Your IAM Client Secret>"
}
}

Unityサンプルコードの実装

次に、以下のサンプルコードを使用してゲームの Epic 認証方法を実装する方法を示します。

以下のサンプルコードではLoginWithOtherPlatform関数を扱っていますが、これは EOS プラグインを呼び出すGetAuthSessionInterfaceメソッドから取得した認証トークンによるサードパーティのプラットフォームログインを処理する AccelByte SDK の一部です。

// AccelByte's Multi Registry initialization
apiClient = MultiRegistry.GetApiClient();
//Grab a reference to the current User, even though they have not been logged in yet.
//This also acts as the initialization point for the whole AccelByte plugin.
user = apiClient.GetApi < User, UserApi > ();

string platformToken = string.Empty();
PlatformInterface s_PlatformInterface = PlatformInterface.Create(ref options);
if (s_PlatformInterface == null)
{
throw new Exception("Failed to create platform");
}

s_PlatformInterface.GetAuthInterface().Login(ref loginOptions, null,
(ref LoginCallbackInfo loginCallbackInfo) =>
{
if (loginCallbackInfo.ResultCode == Result.Success)
{
Debug.Log("Login succeeded");
CopyUserAuthTokenOptions tokenOptions = new CopyUserAuthTokenOptions();

Token? token = null;// will grab Token from EOS Token Model
s_PlatformInterface.GetAuthInterface().CopyUserAuthToken(ref tokenOptions, loginCallbackInfo.LocalUserId,
out token);
if (token == null) {
Debug.Log("Could not get token");
return;
}
platformToken = token.Value.AccessToken;

}
else if (Common.IsOperationComplete(loginCallbackInfo.ResultCode))
{
Debug.Log("Login failed: " + loginCallbackInfo.ResultCode);
}
});

// Login to AccelByte Gaming Service
ApiClient apiClient = MultiRegistry.GetApiClient();
User user = apiClient.GetApi<User, UserApi>();

Result<TokenData, OAuthError> loginResult = null;
user.LoginWithOtherPlatform(PlatformType.EpicGames, platformToken, (Result<TokenData, OAuthError> loginResult) =>
{
if (loginResult.IsError)
{
//If we error, grab the Error Error and Description to print in the Log
Debug.Log($ "Login failed : {loginResult.Error.error} Description : {loginResult.Error.error_description}");
}
else
{
Debug.Log($"Login successful : {loginResult.Value.ToJsonString()}");
}
});

プロジェクトにログインハンドラスクリプトを追加すると、プロジェクトをコンパイルできます。

エピックサンプルコードのテスト

これでプロジェクトをビルドし、実行することができます。以下の画像は、Epic アカウントと当社のテストアプリを使用して正常にログインしたことを示しています。

Epic sample code login

Epic Games のログイン認証情報を入力してログインを完了します。

Epic sample code login

Epic Games のウェブログインの設定

設定手順

  1. AccelByte 管理者ポータルにログインし、[Publisher Namespace (パブリッシャーの名前空間)]を使用して、[User Management (ユーザー管理)]サイドバーの下にある[Login Methods (ログイン方法)]をクリックします。次に右側の[+ Add New (+新規を追加)]ボタンをクリックします。

    AccelByte Admin Portal Login

  2. Epic Games]をクリックします。

  3. Client ID (クライアント ID)]と[Client Secret (クライアントの秘密)]に Epic Games Dev Portal の認証情報を入力します。[Redirect URI (リダイレクト URI)]にドメイン URL (たとえば https://demo.accelbyte.io), を入力し、[Create (作成)]ボタンをクリックします。

  4. アクティベートします。

試行

  1. プレイヤーポータルで、[Login (ログイン)]ボタンをクリックします。

  2. Epic アイコンが見つからない場合は、[More login options (その他のログインオプション)]をクリックしてください。

  3. Login with Epic Games (Epic Games でログイン)]をクリックします。

Epic Games login

[Epic Games Web Login (Epic Games ウェブログイン)]ページにリダイレクトされます。Epic の認証情報を入力して続行できます。以上です。必要な手順を完了しました。

注記

これで、プレイヤーは Epic アカウントを既存の AccelByte アカウントと、あるいは新しいアカウントとリンクするよう求められます。AccelByte では、これを設定可能にするための取り組みを進めています。この設定により、プレイヤーがヘッドレスアカウントで プレイヤーポータルに直接ログインできるようになります。