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

オンラインサブシステムを使用してログインする - シングルプラットフォーム認証でログイン - (Unreal Engine モジュール)

Last updated on February 4, 2026

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

サブシステムを確認する

デバイス ID でログインモジュールでは、デバイス ID ログイン用に AuthEssentialsSubsystem_Starter というサブシステムをセットアップしました。シングルプラットフォーム認証ログインには同様の機能があるため、このサブシステムを再利用して処理できます。

このページにはアクションステップはありません。以下のステップは AuthEssentialsSubsystem_Starter クラスのロジックを示すためのものです。フローをすでに理解している場合は、次のページにスキップしてください。

  1. AuthEssentialsSubsystem_Starter クラス内に、SetAuthCredentials() 関数があります。この関数は、パラメータ LoginMethodIdToken を通じてログインプロセスの認証情報を設定するために使用されます。

    void UAuthEssentialsSubsystem_Starter::SetAuthCredentials(const EAccelByteLoginType& LoginMethod, const FString& Id, const FString& Token) 
    {
    Credentials.Type = (LoginMethod == EAccelByteLoginType::None) ? TEXT("") : FAccelByteUtilities::GetUEnumValueAsString(LoginMethod);
    Credentials.Id = Id;
    Credentials.Token = Token;
    }
  2. 上記の関数を呼び出した後、Login() 関数を呼び出すことができます。この関数は、前の関数で設定された認証情報を取得し、AccelByte Gaming Services (AGS) オンラインサブシステムを使用してログインプロセスを処理します。

    void UAuthEssentialsSubsystem_Starter::Login(const APlayerController* PC, const FAuthOnLoginCompleteDelegate& OnLoginComplete)
    {
    if (!ensure(IdentityInterface.IsValid()))
    {
    FString Message = TEXT("Cannot login. Identity interface is not valid.");
    UE_LOG_AUTH_ESSENTIALS(Warning, TEXT("%s"), *Message);
    OnLoginComplete.ExecuteIfBound(false, *Message);
    return;
    }

    const ULocalPlayer* LocalPlayer = PC->GetLocalPlayer();
    ensure(LocalPlayer != nullptr);
    int32 LocalUserNum = LocalPlayer->GetControllerId();

    IdentityInterface->AddOnLoginCompleteDelegate_Handle(LocalUserNum, FOnLoginCompleteDelegate::CreateUObject(this, &UAuthEssentialsSubsystem_Starter::OnLoginComplete, OnLoginComplete));
    IdentityInterface->Login(LocalUserNum, Credentials);

    /*
    * Logout On Game Exit
    * Workaround for the lobby not properly disconnecting when closing the PIE game.
    */
    if (UAccelByteWarsGameInstance* ByteWarsGameInstance = Cast<UAccelByteWarsGameInstance>(GetGameInstance()); ensure(ByteWarsGameInstance))
    {
    ByteWarsGameInstance->OnGameInstanceShutdownDelegate.AddWeakLambda(this, [this, LocalUserNum]()
    {
    IdentityInterface->Logout(LocalUserNum);

    UE_LOG_AUTH_ESSENTIALS(Warning, TEXT("Logging out local player %d"), LocalUserNum);
    });
    }
    }
  3. OnLoginComplete() 関数は、ログインプロセスが完了したときに呼び出されます。この関数は、ログイン結果とともに OnLoginComplete デリゲートを実行します。

    void UAuthEssentialsSubsystem_Starter::OnLoginComplete(int32 LocalUserNum, bool bLoginWasSuccessful, const FUniqueNetId& UserId, const FString& LoginError, const FAuthOnLoginCompleteDelegate OnLoginComplete)
    {
    if (bLoginWasSuccessful)
    {
    UE_LOG_AUTH_ESSENTIALS(Log, TEXT("Login user successful."));
    }
    else
    {
    UE_LOG_AUTH_ESSENTIALS(Warning, TEXT("Login user failed. Message: %s"), *LoginError);
    }

    IdentityInterface->ClearOnLoginCompleteDelegates(LocalUserNum, this);
    OnLoginComplete.ExecuteIfBound(bLoginWasSuccessful, LoginError);
    }

次のセクションでは、上記の関数を利用してシングルプラットフォーム認証ログインを実装します。

リソース