Apple をアイデンティティプロバイダーとして設定する
注釈:本資料はAI技術を用いて翻訳されています。
Overview
検証済みの Apple Developer アカウントを AccelByte Gaming Services (AGS) に接続することで、AGS SDK を使用したゲーム内、および AGS Player Portal を使用したパブリッシャーウェブサイトで Apple 認証を有効にできます。ここに記載されていない Apple サービス内の追加機能を設定する必要がある場合があります。Apple の担当者に問い合わせ、Apple Developer のドキュメントを確認することをお勧めします。
このガイドは一般公開を目的としており、機密性のため限定的な情報のみを含んでいます。まず、完全な機密ガイドを参照することをお勧めします。ガイドのコピーが必要な場合は、AccelByte のテクニカルプロデューサーにお問い合わせください。
Prerequisites
アイデンティティプロバイダーとして Apple を有効にするための前提条件は、統合の種類によって以下のように異なります。
Web login integration
Web ログイン統合を設定するには、以下が必要です。
- Apple Developer アカウント。
- 認証の設定と権限の管理を行うための AGS Admin Portal アカウント。
- Player Portal と Launcher 用のパブリッシャー namespace。
- Player Portal。
Web ログイン統合は現在 AGS Public Cloud では利用できず、AGS Private Cloud でのみサポートされています。
In-game login integration
ゲーム内ログイン統合を設定するには、以下が必要です。
- Apple Developer アカウント。
- AccelByte Game SDK の最新版をインポートした Unity または Unreal のゲームプロジェクト。
- Unreal Engine の場合、
OnlineSubsystemApple(Apple OSS) が必要です。 - Unity の場合、AccelByte Apple Unity SDK が必要です。
- 認証の設定と権限の管理を行うための AGS Admin Portal アカウント。
- ゲーム namespace。
- AGS Identity and Access Management (IAM) Clients に関する知識。
Set up Apple configuration
アイデンティティプロバイダーとして Apple を有効にするには、まず Apple Developer アカウントで以下の手順に従います。
Create certificates
証明書リソースは、開発や配布のために iOS や Mac、またはウェブアプリにサインインするために使用するデジタル証明書を表します。Developer ID application certificate を作成する必要があります。これを行うには、Apple Developer のドキュメントにある証明書の作成ガイドの手順に従ってください。
証明書を作成できるのは、該当するアカウント保有者、マネージャー、または管理者のみです。
Create App IDs
App ID は、プロビジョニングプロファイル内でアプリを識別します。これは、単一の開発チームから 1 つ以上のアプリを識別するために使用される 2 部構成の文字列です。App Type を持つ App ID を作成する必要があります。これを行うには、Apple Developer Documentation にあるApp ID の登録ガイドの手順に従ってください。
アプリを作成できるのは、該当するアカウント保有者、管理者、または関連する権限を持つその他のアカウントのみです。
Create Service ID
Sign in with Apple (SIWA) を使用する各ウェブサイトについて、サービス識別子 (Services ID) を登録する必要があります。ドメインとリターン URL を設定し、それに関連付けられた秘密鍵を作成します。これを行うには、Apple Developer のドキュメントにあるウェブ用に Sign in with Apple を設定するガイドの手順に従ってください。
Create key
ユーザーが Apple ID を使ってアプリケーションで認証できるように、アプリを有効にします。これを行うには、Apple Developer Documentation にあるサービスにアクセスするための秘密鍵を作成するガイドの手順に従ってください。この手順で生成した鍵のコピーを必ず保持してください。Web およびゲーム内の Apple ログイン方式を設定する際に必要になります。
鍵を作成できるようにするには、SIWA 機能を有効にする必要があります。
Set up Apple login method
Set up web login
プレイヤーが Apple アカウントを使用して Player Portal にサインインできるようにするには、以下の手順に従います。
-
AGS Admin Portal で、パブリッシャー namespace に移動します。
-
サイドバーメニューで、Foundations > 3rd Party Integrations > Auth & Account Linking に移動します。
-
Auth & Account Linking ページで、+ Add New ボタンをクリックします。
-
ログイン方式のオプション一覧から Apple を選択し、Apple の認証情報でログイン設定を入力します。完了したら Create をクリックします。
- Service ID: Apple Service ID。
- Private Key: Private Key の base64 エンコード文字列。取得するには、鍵を作成したときにダウンロードした
.p8ファイル全体を base64 文字列に変換する必要があります。任意のコンバーターを使用できます。 - Team ID: Apple Team ID。Apple Developer コンソールのアカウント名の下で確認できます。
- Key ID: Create key の手順で生成した鍵。
-
詳細ページで Activate をクリックし、ポップアップで再度 Activate をクリックして確定します。
Test and verify
Apple の Web ログイン方式を有効化した後、Player Portal でテストできます。以下の手順に従います。
-
Player Portal のログインページに移動します。

-
ログインオプションから Apple ロゴを選択します。

-
Apple のログインページにリダイレクトされます。Apple の認証情報を使用してログインします。
注記現在、システムはプレイヤーに Apple アカウントを既存または新規の AccelByte アカウントとリンクするよう求めます。AccelByte は、プレイヤーがヘッドレスアカウントで Player Portal にログインできるようにする機能に取り組んでいます。
Set up in-game login
プレイヤーが Apple アカウントを使用してゲームにサインインできるようにするには、以下の手順に従います。
-
AGS Admin Portal で、ゲーム namespace に移動します。
-
サイドバーメニューで、Foundations > 3rd Party Integrations > Auth & Account Linking に移動します。
-
Auth & Account Linking ページで、+ Add New ボタンをクリックします。
-
ログイン方式のオプション一覧から Apple を選択し、Apple の認証情報でログイン設定を入力します。完了したら Create をクリックします。
- Service ID: Apple Service ID。
- Private Key: Private Key の base64 エンコード文字列。取得するには、鍵を作成したときにダウンロードした
.p8ファイル全体を base64 文字列に変換する必要があります。任意のコンバーターを使用できます。 - Team ID: Apple Team ID。Apple Developer コンソールのアカウント名の下で確認できます。
- Key ID: Create key の手順で生成した鍵。
-
詳細ページで Activate をクリックし、ポップアップで再度 Activate をクリックして確定します。
Create an IAM client for Apple
IAM クライアントは、対象プラットフォームでリリースするゲームクライアントを表すものです。IAM クライアントの詳細については、アプリケーションのアクセス制御を管理するを参照してください。
In-game login
各ゲームエンジンによって設定方法は異なります。使用するゲームエンジンに該当する手順に従ってください。
- Unreal Engine instructions
- Unity Engine Instructions
Unreal Engine in-game login integration
Prepare Unreal project settings
-
DefaultEngine.ini ファイルで Client ID と Client Secret を設定します。
[/Script/AccelByteUe4Sdk.AccelByteSettings]
ClientId=abcdefg12345
ClientSecret=abcdefg12345
Namespace=test
PublisherNamespace=accelbyte
BaseUrl="https://prod.gamingservices.accelbyte.io"
QosPingTimeout=0.6
[/Script/AccelByteUe4Sdk.AccelByteServerSettings]
ClientId=defghi12345
ClientSecret=defghi12345
Namespace=test
PublisherNamespace=accelbyte
RedirectURI="http://127.0.0.1"
BaseUrl="https://prod.gamingservices.accelbyte.io"
QosPingTimeout=0.6 -
IOSGame.iniファイルでこれらのフィールドを設定します。[OnlineSubsystem]
; For iOS, our native service will be IOS
DefaultPlatformService=IOS
NativePlatformService=Apple
[OnlineSubsystemApple]
bEnabled=True
[OnlineSubsystemIOS]
bEnabled=True
[OnlineSubsystemIOS.Store]
bSupportsInAppPurchasing=True
bUseStoreV2=false
[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
bEnableSignInWithAppleSupport=True
[OnlineSubsystemGoogle.OnlineIdentityApple]
+ScopeFields="email"
+ScopeFields="fullName" -
Build.csファイルにAccelByteUe4Sdkプラグイン名を追加します。PublicDependencyModuleNames.AddRange(new string[] { "AccelByteUe4Sdk" });
PrivateDependencyModuleNames.Add("OnlineSubsystem");
PrivateDependencyModuleNames.Add("OnlineSubsystemAccelByte");
PrivateDependencyModuleNames.Add("OnlineSubsystemApple"); -
プロジェクトの
.uprojectファイルでOnlineSubsystemAppleプラグインを有効にします。{
"Name": "OnlineSubsystemApple",
"Enabled": true,
"SupportedTargetPlatforms": [
"Mac",
"IOS",
"TVOS"
]
},
Unreal Engine IOS build configuration
Set the Unreal certificates and provisioning
-
Bundle Identifier を、Apple Developer Portal のアプリの Bundle ID に設定します。App ID に SIWA 機能が既に有効になっていることを確認してください。
-
正しい証明書とプロビジョニングファイルを設定します。これには
.mobileprovisionとcert.SingningRequestのファイルが必要です。 -
ローカルセットアップ (Xcode) の Signing & Capabilities で、Sign In with Apple 機能が有効になっていることを確認してください。
Unreal Engine Source BaseEngine.ini Configuration to Enable SIWA
-
Engine のインストール先にある
[EngineDir]/Config/BaseEngine.iniファイルを探します。 -
ファイルを開き、
[/Script/IOSRuntimeSettings.IOSRuntimeSettings]セクションを検索します。 -
そのセクションの下に、このフィールドを追加します。
[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
bEnableSignInWithAppleSupport=True <--- Please add this boolean configuration
Unreal Engine Source Code Modification to using AuthorizationCode Instead of IdentityToken
AuthorizationCode を使用する特別な理由がない限り、この変更は完全に避けてください。推奨していません。
AGS の Identity サービスは既に IdentityToken を認識しており、Unreal Engine の Apple Subsystem も IdentityToken を自動的にサポートしています。AuthorizationCode フローは不要です。
IdentityToken の生成を強制的に AuthorizationCode に変更するには、以下の手順に従う必要があります。
-
以下のファイルを探して開きます。
<EngineDir>\Plugins\Online\OnlineSubsystemApple\Source\Private\OnlineExternalUIInterfaceApple.cpp -
ファイル内で、この行を探します。
signInWithAppleBridge->SignInResultCallback([AuthAppleID user], [AuthAppleID identityToken], [AuthAppleID email], [AuthAppleID fullName], nullptr); -
角括弧内の情報を適切に置き換えて、以下のように行を変更します。
signInWithAppleBridge->SignInResultCallback([AuthAppleID user], [AuthAppleID authorizationCode], [AuthAppleID email], [AuthAppleID fullName], nullptr);
Unreal sample code implementation
-
ヘッダーの宣言:
#include <OnlineSubsystem.h>
#include "Interfaces/OnlineIdentityInterface.h"
#include "Interfaces/OnlineLeaderboardInterface.h"
#include "OnlineIdentityInterfaceAccelByte.h"
#include "OnlineSubsystemAccelByte.h"
#include "OnlineSubsystemAccelByteTypes.h"
#include "Core/AccelByteMultiRegistry.h"
#include "Core/AccelByteError.h" -
Apple OnlineSubsystem を使用して Apple Service にログインし、
OnlineIdentity->GetAuthToken(...)からPlatformTokenを取得します。const IOnlineSubsystem* OnlineSubsystem = IOnlineSubsystem::Get(TEXT("Apple"));
if (OnlineSubsystem == nullptr)
{
FString Message = TEXT("Cannot login with no online subsystem set!");
UE_LOG(LogTemp, Warning, TEXT("%s"), *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);
return;
}
int32 TempLocalUserNum = 0;
OnlineIdentity->AddOnLoginCompleteDelegate_Handle(TempLocalUserNum,
FOnLoginCompleteDelegate::CreateLambda([=]
(int32 LocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, const FString& Error)
{
if (bWasSuccessful)
{
UE_LOG(LogTemp, Warning, TEXT("Success Apple Login"));
PlatformToken = OnlineIdentity->GetAuthToken(TempLocalUserNum);
UE_LOG(LogTemp, Warning, TEXT("Apple PlatformToken : %s"), *PlatformToken);
}
else
{
UE_LOG(LogTemp, Warning, TEXT("Error Login: %s"), *Error);
}
})
);
// login native
FOnlineAccountCredentials Creds{};
OnlineIdentity->Login(TempLocalUserNum, Creds); // Apple Login -
AGS Online Subsystem (OSS) または AGS SDK を使用して AGS にログインします。
- AGS OSS
- AGS SDK
ログイン成功の指標は、
FOnLoginCompleteDelegateコールバックのbWasSuccessfulブール値で確認できます。// Log in to AGS using OSS
const IOnlineSubsystem* OnlineSubsystemABPtr = IOnlineSubsystem::Get("ACCELBYTE");
if (OnlineSubsystemABPtr == nullptr)
{
FString Message = TEXT("Cannot login to AGS, AccelByte Online Subsystem is null!");
UE_LOG(LogTemp, Warning, TEXT("%s"), *Message);
return;
}
const IOnlineIdentityPtr OnlineIdentityABPtr = OnlineSubsystemABPtr->GetIdentityInterface();
if (OnlineIdentityABPtr == nullptr)
{
FString Message = TEXT("Cannot login to AGS, AccelByte Identity Interface is null!");
UE_LOG(LogTemp, Warning, TEXT("%s"), *Message);
return;
}
bool bABLoginDone = false;
bool bABLoginSuccess = false;
FDelegateHandle ABOnLoginCompleteDelegateHandle;
const FOnLoginCompleteDelegate ABLoginComplete = FOnLoginCompleteDelegate::CreateLambda(
[&]
(int32 LoggedInLocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, FString Error)
{
bABLoginDone = true;
bABLoginSuccess = bWasSuccessful;
if (bWasSuccessful)
{
UE_LOG(LogTemp, Log, TEXT("Log in to AGS result: success."));
}
else
{
UE_LOG(LogTemp, Warning, TEXT("Log in to AGS result: fail."));
}
OnlineIdentityABPtr->ClearOnLoginCompleteDelegate_Handle(0, ABOnLoginCompleteDelegateHandle);
});
ABOnLoginCompleteDelegateHandle = OnlineIdentityABPtr->AddOnLoginCompleteDelegate_Handle(0, ABLoginComplete);
FOnlineAccelByteAccountCredentials OnlineAccountCredentialsNative(
EAccelByteLoginType::Apple,
"",
PlatformToken, // Obtained from previous step; log in using Apple OnlineSubsystem
true);
OnlineIdentityABPtr->Login(0, OnlineAccountCredentialsNative);注記この方法は推奨していません。ただし、AGS SDK を使用してログインする方が良い場合は、SDK がプレイヤーの状態管理、キャッシュ機構、ネイティブプラットフォーム機能などの各種機能をサポートできない場合があることに注意してください。
// Log in to AGS using low-level SDK
auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient(TEXT("YOUR_KEY"));
auto UserApi = ApiClient->GetUserApi().Pin();
UserApi->LoginWithOtherPlatform(EAccelBytePlatformType::Apple
, PlatformToken //Obtained from previous step, Log in using Apple OnlineSubsystem
, FVoidHandler::CreateLambda([=]()
{
UE_LOG(LogTemp, Log, TEXT(" Success AB Login "));
})
, FOAuthErrorHandler::CreateLambda([=](int32, const FString&, const FErrorOAuthInfo& Result)
{
UE_LOG(LogTemp, Warning, TEXT(" Error. Code: %s, Reason: %s"), *Result.Error, *Result.Error_description);
}));
Sample code testing
Old sample using AuthorizationCode
この例では、iPhone 11 を使用したコードのテスト結果を示しています。以下の画像は、コードが正しく動作し、サンプルコードを使用して Apple でログインできることを示しています。

Recent sample using IdentityToken
この例では、iPhone 14 を使用したコードのテスト結果を示しています。以下の画像は、Unreal Engine Apple Online Subsystem からの Apple の IdentityToken を示しています。
トークンは AGS に交換され、AccelByte の認証トークン (LoginToIAM の結果) を取得できます。

Unity in-game login integration
Prepare Unity project settings
SDK Config で、AGS Admin Portal の値に基づいて各属性を入力し、設定を保存します。詳細については、SDK のインストールと設定を参照してください。
Unity build configuration
Set the Certificate and Provisioning
-
Bundle Identifier を、Apple Developer Portal のアプリの Bundle ID に設定します。App ID に SIWA 機能が既に有効になっていることを確認してください。
-
Project Settings > Player > iOS > Other Settings に移動します。その後、以下を行います。
- Override Default Bundle Identifier ボックスにチェックを入れ、Apple Developer Portal から取得した Bundle ID を追加します。
- iOS Provisioning Profile ボックスにチェックを入れ、証明書の作成の手順で作成した証明書の Profile ID を追加します。
Install AccelByte Apple Unity SDK
AccelByte Unity SDK Apple Games extension を使用すると、Apple の機能を AGS と統合できます。この拡張機能は GitHub から検索してダウンロードできます。拡張機能をインストールしてゲームに Google ログインを実装するには、GitHub 上の拡張機能のインストールガイドに従ってください。