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

Apple をアイデンティティプロバイダーとして設定する

Last updated on February 4, 2026

注釈:本資料はAI技術を用いて翻訳されています。

概要

認証されたApple DeveloperアカウントをAccelByte Gaming Services (AGS) に接続して、AGS SDKを使用してゲームでApple認証を有効にし、AGS Player Portalを使用してパブリッシャーウェブサイトで有効にすることができます。ここに記載されていないAppleサービス内の追加機能を設定する必要がある場合があります。Appleの担当者に連絡し、Apple Developerドキュメントを確認することをお勧めします。

important

このガイドは公開用であり、機密性のため限定的な情報が含まれています。まず完全な機密ガイドを参照することをお勧めします。機密ガイドのコピーをリクエストするには、AccelByteテクニカルプロデューサーにお問い合わせください。

前提条件

アイデンティティプロバイダーとしてAppleを有効にするための前提条件は次のとおりです:

ウェブログイン統合

ウェブログイン統合を設定するには、以下が必要です:

  • Apple Developerアカウント
  • 認証を設定し、権限を管理するためのAGS Admin Portalアカウント。
  • Player PortalとLauncher用のパブリッシャーnamespace。
  • Player Portal。
AGS Shared Cloud

ウェブログイン統合は現在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ログイン方法を設定するときに必要になります。

IMPORTANT

キーを作成できるようにするには、SIWA機能を有効にする必要があります。

Appleログイン方法の設定

ウェブログインの設定

プレイヤーがAppleアカウントを使用してPlayer Portalにサインインできるようにするには、次の手順に従います:

  1. AGS Admin portalで、パブリッシャーnamespaceに移動します。

  2. サイドバーメニューで、Game Setup > 3rd Party Configuration > Auth & Account Linkingに移動します。

  3. Login Methodsページで、+ Add Newボタンをクリックします。

  4. ログイン方法オプションのリストから、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: キーの作成手順で生成したキー。
  5. 詳細ページで、Activateをクリックし、ポップアップでActivateをクリックして確認します。

テストと検証

Apple Webログイン方法をアクティベートした後、Player Portalでテストできます。次の手順に従います:

  1. Player Portalのログインページに移動します。

    Player Portal

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

    Player Portal Login

  3. Appleログインページにリダイレクトされます。Apple認証情報を使用してログインします。

    Apple Login

    注記

    現在、システムはプレイヤーにAppleアカウントを既存または新しいAccelByteアカウントにリンクするよう求めます。AccelByteは、プレイヤーがヘッドレスアカウントでPlayer Portalにログインできるようにする機能に取り組んでいます。

ゲーム内ログインの設定

プレイヤーがAppleアカウントを使用してゲームにサインインできるようにするには、次の手順に従います:

  1. AGS Admin portalで、ゲームnamespaceに移動します。

  2. サイドバーメニューで、Game Setup > 3rd Party Configuration > Auth & Account Linkingに移動します。

  3. Login Methodsページで、+ Add Newボタンをクリックします。

  4. ログイン方法オプションのリストから、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: キーの作成手順で生成したキー。
  5. 詳細ページで、Activateをクリックし、ポップアップでActivateをクリックして確認します。

Apple用のIAMクライアントの作成

IAMクライアントは、ターゲットプラットフォームでリリースしたいゲームクライアントの表現です。IAMクライアントの詳細については、Manage access control for applicationsを参照してください。

ゲーム内ログイン

各ゲームエンジンの設定は異なります。ゲームエンジンに適用される手順に従ってください。

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

Unrealプロジェクト設定の準備

  1. DefaultEngine.iniファイルでClient IDClient 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
  2. 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"
  3. Build.csファイルにAccelByteUe4Sdkプラグイン名を追加します。

    PublicDependencyModuleNames.AddRange(new string[] {  "AccelByteUe4Sdk"  });

    PrivateDependencyModuleNames.Add("OnlineSubsystem");
    PrivateDependencyModuleNames.Add("OnlineSubsystemAccelByte");
    PrivateDependencyModuleNames.Add("OnlineSubsystemApple");
  4. プロジェクトの.uprojectファイルでOnlineSubsystemAppleプラグインを有効にします。

    {
    "Name": "OnlineSubsystemApple",
    "Enabled": true,
    "SupportedTargetPlatforms": [
    "Mac",
    "IOS",
    "TVOS"
    ]
    },

Unreal Engine IOSビルド設定

Unreal証明書とプロビジョニングの設定

  1. Bundle IdentifierをApple Developer portalのアプリのBundle IDに設定します。App IDにすでにSIWA機能があることを確認してください。

  2. 正しい証明書とプロビジョニングファイルを設定します。これには.mobileprovisioncert.SingningRequestファイルが必要です。

  3. ローカルセットアップ(Xcode)のSigning & CapabilitiesSign In with Apple機能が有効になっていることを確認します。

SIWAを有効にするためのUnreal Engine Source BaseEngine.ini設定

  1. Engineインストールの[EngineDir]/Config/BaseEngine.iniファイルを見つけます。

  2. それを開き、[/Script/IOSRuntimeSettings.IOSRuntimeSettings]セクションを検索します。

  3. そのセクションの下にこのフィールドを追加します。

    [/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に強制的に変更するには、次の手順に従う必要があります:

  1. 次のファイルを見つけて開きます。

    <EngineDir>\Plugins\Online\OnlineSubsystemApple\Source\Private\OnlineExternalUIInterfaceApple.cpp
  2. ファイル内で、この行を見つけます。

    signInWithAppleBridge->SignInResultCallback([AuthAppleID user], [AuthAppleID identityToken], [AuthAppleID email], [AuthAppleID fullName], nullptr);
  3. 行を次のように変更し、角括弧内の情報を適切に置き換えます。

    signInWithAppleBridge->SignInResultCallback([AuthAppleID user], [AuthAppleID authorizationCode], [AuthAppleID email], [AuthAppleID fullName], nullptr);

Unrealサンプルコード実装

  1. ヘッダー宣言:

    #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"
  2. 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
  3. AGS Online Subsystem (OSS)またはAGS SDKを使用してAGSにログインします。

    ログイン成功インジケーターは、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);

サンプルコードのテスト

AuthorizationCodeを使用した古いサンプル

この例は、iPhone 11を使用してコードをテストした結果を示しています。次の画像は、コードが機能し、ユーザーがサンプルコードを使用してAppleでログインできることを示しています。

Unreal Engine Code Testing

IdentityTokenを使用した最近のサンプル

この例は、iPhone 14を使用してコードをテストした結果を示しています。次の画像は、Unreal Engine Apple Online SubsystemからのApple IdentityTokenを示しています。

トークンはAGSに交換され、AccelByte認証トークン(LoginToIAM result)を取得できます。

Unreal Engine Code Testing