Apple をアイデンティティプロバイダーとして設定する
注釈:本資料はAI技術を用いて翻訳されています。
概要
認証されたApple DeveloperアカウントをAccelByte Gaming Services (AGS) に接続して、AGS SDKを使用してゲームでApple認証を有効にし、AGS Player Portalを使用してパブリッシャーウェブサイトで有効にすることができます。ここに記載されていないAppleサービス内の追加機能を設定する必要がある場合があります。Appleの担当者に連絡し、Apple Developerドキュメントを確認することをお勧めします。
このガイドは公開用であり、機密性のため限定的な情報が含まれています。まず完全な機密ガイドを参照することをお勧めします。機密ガイドのコピーをリクエストするには、AccelByteテクニカルプロデューサーにお問い合わせください。
前提条件
アイデンティティプロバイダーとしてAppleを有効にするための前提条件は次のとおりです:
ウェブログイン統合
ウェブログイン統合を設定するには、以下が必要です:
- Apple Developerアカウント。
- 認証を設定し、権限を管理するためのAGS Admin Portalアカウント。
- Player PortalとLauncher用のパブリッシャーnamespace。
- Player Portal。
ウェブログイン統合は現在AGS Shared Cloudでは利用できず、AGS Private Cloudでのみサポートされています。
ゲーム内ログイン統合
ゲーム内ログイン統合を設定するには、以下が必要です:
- 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に関する知識。
Apple設定のセットアップ
アイデンティティプロバイダーとしてAppleを有効にするには、まずApple Developerアカウントで次の手順に従います。
証明書の作成
証明書リソースは、開発および配布用のiOSまたはMac、またはWebアプリにサインインするために使用するデジタル証明書を表します。Developer ID application certificateを作成する必要があります。これを行うには、Apple DeveloperドキュメントのCreate Certificateガイドの手順に従ってください。
適切なアカウント所有者、マネージャー、または管理者のみが証明書を作成できます。
App IDの作成
App IDは、プロビジョニングプロファイル内のアプリを識別します。これは、単一の開発チームから1つ以上のアプリを識別するために使用される2部構成の文字列です。App Type付きのApp IDを作成する必要があります。これを行うには、Apple Developer DocumentationのRegister an App IDガイドの手順に従ってください。
適切なアカウント所有者、管理者、または関連する権限を持つその他のアカウントのみがアプリを作成できます。
Service IDの作成
Sign in with Apple (SIWA)を使用する各ウェブサイトについて、サービス識別子(Services ID)を登録する必要があります。ドメインとリターンURLを設定し、関連する秘密鍵を作成します。これを行うには、Apple DeveloperドキュメントのConfigure Sign in with Apple for the webガイドの手順に従ってください。
キーの作成
ユーザーがApple IDでアプリケーションで認証できるようにアプリを有効にします。これを行うには、Apple Developer DocumentationのCreate a private key to access a serviceガイドの手順に従ってください。この手順で生成したキーのコピーを必ず保管してください。WebおよびゲームのAppleログイン方法を設定するときに必要になります。
キーを作成できるようにするには、SIWA機能を有効にする必要があります。
Appleログイン方法の設定
ウェブログインの設定
プレイヤーがAppleアカウントを使用してPlayer Portalにサインインできるようにするには、次の手順に従います:
-
AGS Admin portalで、パブリッシャーnamespaceに移動します。
-
サイドバーメニューで、Game Setup > 3rd Party Configuration > Auth & Account Linkingに移動します。
-
Login Methodsページで、+ Add Newボタンをクリックします。
-
ログイン方法オプションのリストから、Appleを選択し、Apple認証情報でログイン設定を入力します。完了したらCreateをクリックします。
- Service ID: Apple Service ID。
- Private Key: Private Keyのbase64エンコードされた文字列。これを取得するには、キーを作成したときにダウンロードした
.p8ファイル全体をbase64文字列に変換する必要があります。お好みのコンバーターを使用できます。 - Team ID: Apple Team ID。Apple Developer consoleのアカウント名の下にあります。
- Key ID: キーの作成手順で生成したキー。
-
詳細ページで、Activateをクリックし、ポップアップでActivateをクリックして確認します。
テストと検証
Apple Webログイン方法をアクティベートした後、Player Portalでテストできます。次の手順に従います:
-
Player Portalのログインページに移動します。

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

-
Appleログインページにリダイレクトされます。Apple認証情報を使用してログインします。
注記現在、システムはプレイヤーにAppleアカウントを既存または新しいAccelByteアカウントにリンクするよう求めます。AccelByteは、プレイヤーがヘッドレスアカウントでPlayer Portalにログインできるようにする機能に取り組んでいます。
ゲーム内ログインの設定
プレイヤーがAppleアカウントを使用してゲームにサインインできるようにするには、次の手順に従います:
-
AGS Admin portalで、ゲームnamespaceに移動します。
-
サイドバーメニューで、Game Setup > 3rd Party Configuration > Auth & Account Linkingに移動します。
-
Login Methodsページで、+ Add Newボタンをクリックします。
-
ログイン方法オプションのリストから、Appleを選択し、Apple認証情報でログイン設定を入力します。完了したらCreateをクリックします。
- Service ID: Apple Service ID。
- Private Key: Private Keyのbase64エンコードされた文字列。これを取得するには、キーを作成したときにダウンロードした
.p8ファイル全体をbase64文字列に変換する必要があります。お好みのコンバーターを使用できます。 - Team ID: Apple Team ID。Apple Developer consoleのアカウント名の下にあります。
- Key ID: キーの作成手順で生成したキー。
-
詳細ページで、Activateをクリックし、ポップアップでActivateをクリックして確認します。
Apple用のIAMクライアントの作成
IAMクライアントは、ターゲットプラットフォームでリリースしたいゲームクライアントの表現です。IAMクライアントの詳細については、Manage access control for applicationsを参照してください。
ゲーム内ログイン
各ゲームエンジンの設定は異なります。ゲームエンジンに適用される手順に従ってください。
- Unreal Engine手順
- Unity Engine手順
Unreal Engineゲーム内ログイン統合
Unrealプロジェクト設定の準備
-
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ビルド設定
Unreal証明書とプロビジョニングの設定
-
Bundle IdentifierをApple Developer portalのアプリのBundle IDに設定します。App IDにすでにSIWA機能があることを確認してください。
-
正しい証明書とプロビジョニングファイルを設定します。これには
.mobileprovisionとcert.SingningRequestファイルが必要です。 -
ローカルセットアップ(Xcode)のSigning & CapabilitiesでSign In with Apple機能が有効になっていることを確認します。
SIWAを有効にするためのUnreal Engine Source BaseEngine.ini設定
-
Engineインストールの
[EngineDir]/Config/BaseEngine.iniファイルを見つけます。 -
それを開き、
[/Script/IOSRuntimeSettings.IOSRuntimeSettings]セクションを検索します。 -
そのセクションの下にこのフィールドを追加します。
[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
bEnableSignInWithAppleSupport=True <--- Please add this boolean configuration
IdentityTokenの代わりにAuthorizationCodeを使用するためのUnreal Engineソースコード変更
AuthorizationCodeを使用する特別な理由がない場合は、この変更を完全に避けてください。推奨しません。
Identity serviceはすでに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サンプルコード実装
-
ヘッダー宣言:
#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);
}));
サンプルコードのテスト
AuthorizationCodeを使用した古いサンプル
この例は、iPhone 11を使用してコードをテストした結果を示しています。次の画像は、コードが機能し、ユーザーがサンプルコードを使用してAppleでログインできることを示しています。

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

Unityゲーム内ログイン統合
Unityプロジェクト設定の準備
SDK Configで、AGS Admin Portalの値に基づいて各属性を入力し、設定を保存します。詳細については、Install and configure the SDKを参照してください。
Unityビルド設定
証明書とプロビジョニングの設定
-
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を追加します。
AccelByte Apple Unity SDKのインストール
AccelByte Unity SDK Apple Games拡張機能を使用すると、AppleのfeatureをAGSと統合できます。この拡張機能はGitHubで見つけてダウンロードできます。拡張機能をインストールしてゲームにGoogleログインを実装するには、GitHubの拡張機能のinstallation guideに従ってください。