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

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

Last updated on July 15, 2026

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

Overview

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

important

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

Prerequisites

アイデンティティプロバイダーとして Apple を有効にするための前提条件は、統合の種類によって以下のように異なります。

Web login integration

Web ログイン統合を設定するには、以下が必要です。

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

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 ログイン方式を設定する際に必要になります。

IMPORTANT

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

Set up Apple login method

Set up web login

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

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

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

  3. Auth & Account Linking ページで、+ 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 コンソールのアカウント名の下で確認できます。
    • Key ID: Create key の手順で生成した鍵。
  5. 詳細ページで Activate をクリックし、ポップアップで再度 Activate をクリックして確定します。

Test and verify

Apple の Web ログイン方式を有効化した後、Player Portal でテストできます。以下の手順に従います。

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

    Player Portal

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

    Player Portal Login

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

    Apple Login

    注記

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

Set up in-game login

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

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

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

  3. Auth & Account Linking ページで、+ 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 コンソールのアカウント名の下で確認できます。
    • Key ID: Create key の手順で生成した鍵。
  5. 詳細ページで Activate をクリックし、ポップアップで再度 Activate をクリックして確定します。

Create an IAM client for Apple

IAM クライアントは、対象プラットフォームでリリースするゲームクライアントを表すものです。IAM クライアントの詳細については、アプリケーションのアクセス制御を管理するを参照してください。

In-game login

各ゲームエンジンによって設定方法は異なります。使用するゲームエンジンに該当する手順に従ってください。

Unreal Engine in-game login integration

Prepare Unreal project settings

  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 build configuration

Set the Unreal certificates and provisioning

  1. Bundle Identifier を、Apple Developer Portal のアプリの Bundle ID に設定します。App ID に SIWA 機能が既に有効になっていることを確認してください。

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

  3. ローカルセットアップ (Xcode) の Signing & Capabilities で、Sign In with Apple 機能が有効になっていることを確認してください。

Unreal Engine Source BaseEngine.ini Configuration to Enable SIWA

  1. Engine のインストール先にある [EngineDir]/Config/BaseEngine.ini ファイルを探します。

  2. ファイルを開き、[/Script/IOSRuntimeSettings.IOSRuntimeSettings] セクションを検索します。

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

    [/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 に変更するには、以下の手順に従う必要があります。

  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 sample code implementation

  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);

Sample code testing

Old sample using AuthorizationCode

この例では、iPhone 11 を使用したコードのテスト結果を示しています。以下の画像は、コードが正しく動作し、サンプルコードを使用して Apple でログインできることを示しています。

Unreal Engine Code Testing

Recent sample using IdentityToken

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

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

Unreal Engine Code Testing