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

Set up OIDC as an Identity Provider

Last updated on November 23, 2023

概要

このガイドは、OIDC を AccelByte Gaming Services (AGS) に統合することを支援するためのものです。ゲームによっては、ここに記載されていないアイデンティティプロバイダー内の追加機能を設定する必要があります。OIDC サービスの設定の詳細については、アイデンティティプロバイダー担当者にお問い合わせいただき、また直接アイデンティティプロバイダーのドキュメントを確認されることをお勧めします。

目標

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

前提条件

ウェブログイン統合の場合

  • OIDC をサポートするアイデンティティプロバイダーを所有しておきます。
  • 認証を設定し、権限を管理するための AccelByte 管理者ポータルアカウントを所有しておきます。
  • まだ設定していない場合は、プレイヤーポータルとランチャーのパブリッシャーの名前空間を設定します。
  • プレイヤーポータルを所有しておきます。

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

  • OIDC をサポートするアイデンティティプロバイダーを用意しておきます。
  • 認証を設定し、権限を管理するための AccelByte 管理者ポータルアカウントを所有しておきます。
  • まだ設定していない場合は、ゲームに対し、ゲームの名前空間を設定します。
  • AccelByte Game SDK をインポートしたUnityまたはUnrealゲームプロジェクトを所有しておきます。
  • 最新版の AccelByte Unity SDK または Unreal SDK を入手します。
  • AccelByte IAM クライアントに精通しておきます。

アイデンティティプロバイダー (IdP) の設定

次の手順を使用して、ゲーム内でアイデンティティプロバイダー (IdP) OIDC ログインを設定します。これでプレイヤーは自分のアカウントを使用して管理者ポータル、プレイヤーポータル/ランチャーとゲーム内にサインインできます。

OIDC をサポートするお好みのアイデンティティプロバイダー (IdP) を使用できます。当社がサポートする認証タイプは 3 種類あります。

  1. 認証コードは、ウェブフローベースの認証用です。アイデンティティプロバイダーのログインページにリダイレクトされ、さらにアクセス権を持つ AccelByte ポータルにリダイレクトされます。

  2. ID トークンについては、アイデンティティプロバイダーから ID トークンを生成する必要があります。これは AccelByte アクセストークンと交換できます。

  3. アクセストークンは、アイデンティティプロバイダーが ID トークンを提供できないものの、アクセストークンでアクセスできるユーザー情報エンドポイントを持っている場合のカスタムニーズに対応しています。

認証コードの種類

OKTA OIDC を例として、OIDC プレイヤーポータルと管理者ポータルログインを設定します。認証コードを使用する場合、アイデンティティプロバイダー OIDC を AccelByte Game Service と統合するには、次の項目が必要です。

  • JWKS URL
  • Issuer (発行元)
  • Client ID (クライアント ID)
  • Client Secret (クライアントの秘密)
  • Authorization Request URL (承認リクエス トURL)
  • Token Endpoint URL (トークンエンドポイント URL)

例として OKTA をアイデンティティプロバイダーとして使用します。ただし OKTA に限定されないことに注意してください。OIDC をサポートする他のアイデンティティプロバイダーも使用できます。

OKTA アプリケーションの作成

OKTA アカウントの下で OKTA アプリケーションを作成します。OIDC アプリ統合の作成ガイド の指示に従ってください。

OKTA OIDC 設定の取得

アプリ openid-configuration を開くには、この URL:https://<YOUR_OKTA_URL>.okta.com/oauth2/default/.well-known/openid-configurationの指示に従ってください。

OIDC 認証コードタイプログインの設定に必要な、以下のアイテムを取得できます。

  • JWKS URL
  • Issuer (発行元)
  • Authorization Request URL (承認リクエスト URL)
  • Token Endpoint URL (トークンエンドポイント URL)

ID トークンタイプ

ID トークンを使用する場合、アイデンティティプロバイダー (IdP) からの承認を処理して ID トークンを取得する必要があります。アイデンティティプロバイダー OIDC を AccelByte Game Service と統合するには、次の項目が必要です。

  • JWKS URL
  • Issuer (発行元)
  • Client ID (クライアント ID)

例として Facebook をアイデンティティプロバイダーとして使用します。ただし Facebook に限定されないことに注意してください。OIDC をサポートする他のアイデンティティプロバイダーを使用することもできます。

Facebook アプリケーションの作成

Facebook 開発者カウントの下で Facebook アプリケーションを作成します。アプリ作成ガイド の指示に従ってください。

アプリに Facebook ログインプロダクトを追加

アプリに Facebook ログインプロダクトを追加します。JavaScript SDK によるウェブ用 Facebook ログインガイド の指示に従ってください。

アクセストークンタイプ

アクセストークンを使用する場合、アイデンティティプロバイダー OIDC を AccelByte Game Service に統合するには、次の項目が必要です。

  • User Info Endpoint URL (ユーザー情報エンドポイント URL)
  • User Info Endpoint HTTP method (ユーザー情報エンドポイント HTTP メソッド)

例として OKTA をアイデンティティプロバイダーとして使用します。ただし OKTA に限定されないことに注意してください。OIDC をサポートする他のアイデンティティプロバイダーも使用できます。

OKTA アプリケーションの作成

OKTA アカウントの下で OKTA アプリケーションを作成します。OIDC アプリ統合作成ガイド の指示に従ってください。

OIDC ログイン方法の設定

ウェブログインの場合

認証コードタイプ

次の手順を使用して、プレイヤーポータルと管理者ポータルで OIDC ログインを設定します。これでプレイヤーは自分のアイデンティティプロバイダーアカウントを使用してプレイヤーポータルにサインインできます。

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

2.[Create OIDC (OIDC を作成)]ボタンを選択します。 OIDC

  1. この例(OKTA OIDC)では、[Authorization Code (承認コード)]を認証タイプとして使用します。以下のセクションに入力する必要があります。 a. [Platform Name (プラットフォーム名)]:わかりやすい名前、たとえば「oidcokta」を入力します。

    b. [Platform ID (プラットフォーム ID)]:OKTA アプリで有効な RedirectURI として使用するプラットフォーム ID (たとえば「oidcokta」)を入力します。

    c. [Authentication type (認証タイプ)]:[Authorization Code (承認コード)]。

    a. [JWKS URL]:OKTA openid 設定 URL に jwks_uri を指定します。

    d. [Issuer (発行元)]:OKTA openid 設定 URL に issuer を指定します。

    e. [Client ID (クライアント ID)]:「OKTA アプリケーションの作成」ステップで取得した OKTA クライアント ID を入力します。

    f. [Client Secret (クライアントの秘密)]:「OKTA アプリケーションの作成」ステップで取得したOKTA クライアントの秘密を入力します。

    g. [Authorization Request URL (承認リクエスト URL)]:OKTA openid 設定 URL に authorization_endpoint を指定します。

    h. [Token Endpoint URL (トークンエンドポイント URL)]:OKTA openid 設定 URL に token_endpoint を指定します。

    i. [Clients (クライアント)]:この OIDC にクライアントを設定すると、使用状況に応じてプレイヤーポータル/ランチャー/管理者ポータル/ゲーム内ログインに OIDC ログインを使用できます。たとえば、OIDC ログインをプレイヤーポータルおよび管理者ポータルに統合する場合は、プレイヤーポータルウェブサイト IAM クライアント管理者ポータルウェブサイト IAM クライアントの両方をここに追加する必要があります。

    j. [Scopes (Optional) (スコープ(オプション))]:デフォルトでは、[openid email profile (openid メールプロファイル)]になります。

    すべて入力したら、[Next (次へ)]をクリックします。

    Auth Code Config 1 Auth Code Config 2

  2. ユーザーアイデンティティを ID トークンにマッピングすると、AccelByte アカウント内に構文解析できます。 Auth Code Config 3

  3. (オプション)ドメインを登録するには、[Register Domain (ドメインを登録)]ボタンをクリックして、ユーザーにロールを付与します。その後、以下の項目を入力します。

    a. [Domain Name (ドメイン名)]:<your-domain> 例:accelbyte.net

    b. [Client (クライアント)]:ユーザーには、クライアントに最初にログインするときにデフォルトのロールが付与されます。たとえば、ユーザーが管理者ポータルで OIDC を使用してログインしたときに管理者ロールを付与する場合、[Admin Portal Website IAM Client (管理者ポータルウェブサイト IAM クライアント)]に設定します。

    c. [Default Role (デフォルトのロール)]:ユーザーに付与するロール。

    d. [**Default Namespace (デフォルトの名前空間)]:デフォルトのロールがグローバルロールでない場合は、ロールの対象となる名前空間を指定する必要があります。

    ドメインの登録は、指定されたドメインのユーザーに自動的にロールを割り当てる場合に便利です。たとえば、OIDC ログインを管理者ポータルログインに使用すると、ユーザーが OIDC ログインを使用してログインした際に、<your-domain>下のユーザーに自動的にロールを許可します。

Auth Code Domain Config 1

Auth Code Domain Config 2

  1. 詳細ページにリダイレクトされます。その時点でアクティベートすると使用できます。

    Auth Code Activate

OIDC を使用したプレイヤーポータルからのユーザーログイン

Publisher Namespace (パブリッシャーの名前空間)]で既に OIDC ログイン方法を設定し、[Player Portal Website Client (プレイヤーポータルウェブサイトクライアント)]を OIDC クライアントとして設定していることを確認してください。

  1. プレイヤーポータルに移動し、[Login (ログイン)]をクリックします。 Player Portal

  2. More Login Options (その他のログインオプション)]をクリックします。 More Login Options

  3. [Login with <oidcplatform>]をクリックします。 OIDC Login

  4. [OKTA Login (OKTA ログイン)]ページにリダイレクトされるので、認証情報を入力してログインします。 OKTA Login

注記

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

OIDC を使用した管理者ポータルからのユーザーログイン

Publisher Namespace (パブリッシャーの名前空間)]で OIDC ログイン方法を設定し、[**Admin Portal Website Client (管理者ポータルウェブサイトクライアント)]を OIDC クライアントとして設定していることを確認してください。

管理者ポータルにアクセスするには、ユーザーに管理者ロールを付与する必要があります。既に OIDC ログイン方法にドメインを登録し、そのドメインに管理者ロールを付与している場合、登録ドメインの下にあるすべての OIDC ユーザーに、ドメインに与えたロールが付与されます。

  1. 管理者ポータルに移動すると、ログインページにリダイレクトされます。OIDC ロゴをクリックします。複数ある場合は、マウスカーソルをボタンに合わせて、正しい OIDC ログインを使用していることを確認します。 Admin Portal Login

  2. [OKTA Login (OKTA ログイン)]ページにリダイレクトされるので、認証情報を入力してログインします。 OKTA Login

  3. ログイン後、管理者ポータルにリダイレクトされ、付与されたロールに基づいてアクセスできます。たとえば、割り当てられたロールが Accelbyte の名前空間の管理者ポータル読み取り専用である場合、名前空間 Accelbyte でそのロールを使用して許可されているすべての機能にのみアクセスできます。

    Domain Setting Admin Logged In

ゲーム内ログインの場合

ID トークンタイプ

Facebook OIDC を例として使用し、OIDC ゲーム内ログインを設定します。ゲーム内で OIDC ログインを設定するには、次の手順を実行します。これでプレイヤーは自分のアイデンティティプロバイダーアカウントを使用してゲームにサインインできます

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

  2. [Create OIDC (OIDC を作成)]ボタンを選択します。 OIDC

  3. この例(Facebook OIDC)では、認証タイプとして[ID Token (IDトークン)]を使用します。次のセクションを入力する必要があります。 a. [**Platform Name (プラットフォーム名)]:わかりやすい名前、たとえば「oidcfacebook」を入力します。

    b. [Platform ID (プラットフォーム ID)]:わかりやすい値、たとえば「oidcfacebook」を入力します。

    c. [Authentication type (認証タイプ)]:[ID Token (ID トークン)]。

    d. JWKS URL:Facebook OIDC を使用しているため、https://www.facebook.com/.well-known/oauth/openid/jwks/”を入力します。

    e. [Issuer (発行元)]:Facebook OIDC を使用しているため、発行元としてhttps://www.facebook.com”を入力します。

    すべて入力したら、[Next (次へ)]をクリックします。 ID Token Config 1

  4. ユーザーアイデンティティを ID トークンにマッピングすると、AccelByte アカウント内に構文解析できます。トークンクレームの詳細については、こちら(ScopeClaimsをご覧ください。 ID Token Config 2

  5. 詳細ページにリダイレクトされます。その時点でアクティベートすると使用できます。 ID Token Activate

アクセストークンタイプ

OKTA OIDC を例として、OIDC ゲーム内ログインを設定します。ゲーム内で OIDC ログインを設定するには、次の手順を実行します。これでプレイヤーは自分のアイデンティティプロバイダーアカウントを使用してゲームにサインインできます

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

  2. [Create OIDC (OIDC を作成)]ボタンを選択します。 OIDC

  3. この例(OKTA)では、[Access Token (アクセストークン)]を認証タイプとして使用します。次のセクションに入力する必要があります。 a. [Platform Name (プラットフォーム名)]:わかりやすい名前、たとえば「oidc okta access token」を入力します。

    b. [Platform ID (プラットフォーム ID)]:わかりやすい値、たとえば「oktaaccesstoken」を入力します。

    c. [Authentication type (認証タイプ)]:[Access Token (アクセストークン)]。

    d. [UserInfo Endpoint (ユーザー情報エンドポイント)]:OKTA アプリケーションユーザー情報エンドポイント、たとえばhttps://YOUR_OKTA_URL.okta.com/oauth2/v1/userinfoを入力します。

    e. [HTTP Method (HTTP メソッド)]:アイデンティティプロバイダーが使用する、対応する HTTP メソッド、たとえばGETを入力します。

    すべて入力したら、[Next (次へ)]をクリックします。 Access Token Config 1

  1. ユーザー情報エンドポイント応答でユーザーアイデンティティをマッピングすると、AccelByte アカウント内に構文解析できます。 Access Token Config 2

詳細ページにリダイレクトされます。その時点でアクティベートすると使用できます。 Access Token Activate

IAM クライアントの作成

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

特定の SDK プラットフォーム(XBox/Steam/PlayStation など)でゲーム用の IAM クライアントを既にお持ちの場合は、新しい IAM クライアントを作成する必要はありません。アイデンティティプロバイダー (IdP) はゲームをビルドするためのプラットフォームではないため、既存の IAM クライアントを使用できます。IAM クライアントの詳細については、こちらのドキュメントhttps://docs.accelbyte.io/guides/access/iam-client.htmlを参照してください。

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

    IAM clients

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

    Create IAM client

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

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

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

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

    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 (プラットフォーム入力)]とは、ゲームをビルドするためのターゲットプラットフォームを意味します。

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

    IAM client configuration

    IAM client configuration

    注記

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

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

IAM Client detail

IAM Client detail

ゲーム内ログイン手順

ゲームエンジンごとに設定が異なります。利用可能なタブからゲームエンジンを選択してください。

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

AccelByte SDK でサインインするようにゲームを統合すると、プレイヤーは OIDC 認証情報を使用してゲームにログインできます。すべてのアイデンティティプロバイダー (IdP) が UE4 の統合をサポートしているわけではありません。そのためこの実装ではウェブログインを使用します。

Unrealの準備と設定

依存関係の追加

最初に AccelbyteUe4Sdk と呼ばれる公開依存関係モジュールを追加する必要があります。この依存関係は、プロジェクトを統合してUnreal Engine 内で Accelbyte SDK プラグインを使用するために必要となります。

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

PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" , "AccelByteUe4Sdk", "Slate", "SlateCore" });

PrivateDependencyModuleNames.AddRange(new string[] { "Json", "HTTP" });

}

AccelbyteUe4Sdk<YourProject>.Target.cs<YourProjectEditor>.Target.csの内部に追加します。

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

OIDC ログインのためのUnreal Engine プロジェクト設定

DefaultEngine.ini ファイル内で、Accelbyte 認証情報を DefaultEngine.ini のこの部分に追加してください。

[/Script/AccelByteUe4Sdk.AccelByteSettings]
ClientId=<Your Client_Id>
ClientSecret=<Your Client_Secret>
Namespace=<Your Namespace>
PublisherNamespace=<Your Publisher Namespace>
RedirectURI="http://127.0.0.1"
BaseUrl="https://demo.accelbyte.io"
IamServerUrl="https://demo.accelbyte.io/iam"
PlatformServerUrl="https://demo.accelbyte.io/platform"

Unrealサンプルコードの実装

次のステップとして、以下のサンプルコードを使用してゲームの OIDC 認証方法を実装する方法を説明します。

  1. BluePrint で WebBrowser アイテムをログインコンテナとして作成します。

  2. ログイン OIDC URL を読み込み、以下の認証パラメータを追加します。

    1. redirect_uri:ログインが完了したときの RedirectURL。リダイレクトすると、BaseURL がゲームに入力した値に戻るからです (FRegistry::Settings.BaseUrl)。また、BaseUrl の値を OIDC デベロッパーポータルのリダイレクト URI 設定に入力して、ホワイトリストに登録します。
    2. response_type:値を "code" とします。
    3. scope:値として権限スコープを入力します
void UAccelByteAuth::OIDCLogin()
{
FString OIDCClientId = TEXT("<YOUR_CLIENT_ID>");
FString OIDCClientSecret = TEXT("<YOUR_CLIENT_SECRET>");
FString AuthorizationUrl = TEXT("<YOUR_AUTH_URL>");
FString TokenUrl = TEXT("<YOUR_TOKEN_URL>");
GConfig->GetString(TEXT("OIDCConfig"), TEXT("OIDCClientId"), OIDCClientId, GEngineIni);
FString RedirectUri = FRegistry::Settings.BaseUrl;
FString Scope = TEXT("Your_OIDC_Scope");

FString Url = FString::Printf(TEXT("https://your_domain?client_id=%s&redirect_uri=%s&response_type=%s&scope=%s"),
*FGenericPlatformHttp::UrlEncode(OIDCClientId),
*FGenericPlatformHttp::UrlEncode(RedirectUri),
TEXT("code"),
*FGenericPlatformHttp::UrlEncode(Scope));

WBrowser_OIDCAuth->LoadURL(Url);
WBrowser_OIDCAuth->OnUrlChanged.AddUniqueDynamic(this, &UAccelByteAuth::AccelByteLoginWithOIDC);
}

void UAccelByteAuth::AccelByteLoginWithOIDC(const FText& NewUrl)
{
FString Url = NewUrl.ToString();
FString RedirectUri = FRegistry::Settings.BaseUrl;
FString LoginCode = TEXT("");

if (Url.Contains(RedirectUri))
{
LoginCode = FGenericPlatformHttp::GetUrlParameter(Url, TEXT("code")).GetValue();
}

if (!LoginCode.IsEmpty())
{
const FString SdkTestPlatformId = TEXT("OIDCTest");
ExchangeAuthorizationCode(LoginCode, SdkTestPlatformId);
}
}

void UAccelByteAuth::ExchangeAuthorizationCode(const FString& AuthorizationCode, const FString& PlatformId)
{
// Construct the form data for token exchange
FString ClientId;
GConfig->GetString(TEXT("OIDCConfig"), TEXT("OIDCClientId"), ClientId, GEngineIni);
FString ClientSecret;
GConfig->GetString(TEXT("OIDCConfig"), TEXT("OIDCClientSecret"), ClientSecret, GEngineIni);
FString RedirectUri = FRegistry::Settings.BaseUrl;

TMap<FString, FString> FormFields;
FormFields.Add(TEXT("code"), AuthorizationCode);
FormFields.Add(TEXT("client_id"), ClientId);
FormFields.Add(TEXT("client_secret"), ClientSecret);
FormFields.Add(TEXT("redirect_uri"), RedirectUri);
FormFields.Add(TEXT("grant_type"), TEXT("authorization_code"));

// Convert form data to JSON
FString JsonPayload = FJsonObjectConverter::MapToJsonString(FormFields);

// Send the token exchange request
FString TokenUrl = TEXT("https://your_token_url");
FHttpModule* HttpModule = &FHttpModule::Get();
TSharedRef<IHttpRequest> Request = HttpModule->CreateRequest();
Request->SetURL(TokenUrl);
Request->SetVerb(TEXT("POST"));
Request->SetHeader(TEXT("Content-Type"), TEXT("application/json"));
Request->SetContentAsString(JsonPayload);
Request->OnProcessRequestComplete().BindUObject(this, &UAccelByteAuth::HandleTokenExchangeResponse);
Request->ProcessRequest();
}

void UAccelByteAuth::HandleTokenExchangeResponse(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bSuccess)
{
if (bSuccess && Response.IsValid())
{
int32 ResponseCode = Response->GetResponseCode();
FString ResponseContent = Response->GetContentAsString();

if (ResponseCode == 200)
{
// Extract the access token from the response
FString AccessToken;
TSharedPtr<FJsonObject> JsonObject;
TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(ResponseContent);

if (FJsonSerializer::Deserialize(Reader, JsonObject))
{
if (JsonObject->HasField(TEXT("access_token")))
{
AccessToken = JsonObject->GetStringField(TEXT("access_token"));
}
}

// Handle the access token
if (!AccessToken.IsEmpty())
{
// Access token successfully extracted
const FString SdkTestPlatformId = TEXT("oidcokta");
FRegistry::User.LoginWithOtherPlatform(SdkTestPlatformId, AccessToken, FVoidHandler::CreateWeakLambda(this, [this]()
{
// Handle Success Login
}),
FCustomErrorHandler::CreateWeakLambda(this, [](int32 ErrorCode, const FString& ErrorMessage, const FJsonObject& ErrorJson)
{
// Handle Error Login
}));

// Close Login Page (Hide WebBrowser)
}
}
else
{
// Failed to extract access token from the response
}
}
else
{
// Token exchange request failed with an error response code
}
}
else
{
// Token exchange request failed
}
}

このサンプルコードをプロジェクトに追加したら、プロジェクトをコンパイル、ビルド、実行します。以上です。

サンプルコードのテスト

以下にコードが動作し、OIDC とサンプルコードを使用してログインできることを示すスクリーンショットを提示します。 Unreal Code Testing