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

すべてを統合する - Steam でログインする - (Unity モジュール)

Last updated on February 4, 2026

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

備考

このチュートリアルモジュールは、Steamworks の制限により WebGL ビルドには適用されません。

UI を接続してプレイヤーが Steam でログインできるようにする

このチュートリアルでは、前のセクションで作成した Steam ログイン実装とログインメニューを接続する方法を学びます。

  1. SinglePlatformAuthWrapper_Starter クラスを開き、以下の関数を追加します。この関数は Steam に認証チケットを取得するリクエストを送信し、それをプラットフォームトークンとして使用して AGS にログインします。Steam は WebGL ビルドではサポートされていないため、必ず #if !UNITY_WEBGL でラップしてください。

    #if !UNITY_WEBGL
    private async void GetSteamAuthTicket(ResultCallback<string> resultCallback)
    {
    if (!SteamManager.Initialized)
    {
    BytewarsLogger.LogWarning(
    "Failed to get Steam auth ticket. Steam API is not initialized. " +
    "Try to open the Steam Client first before launching the game.");
    resultCallback?.Invoke(Result<string>.CreateError(ErrorCode.NotImplemented, "Steam API is not initialized"));
    return;
    }

    byte[] buffer = new byte[1024];
    SteamNetworkingIdentity identity = new SteamNetworkingIdentity();
    identity.SetGenericString(string.Empty);

    // Request to get Steam auth ticket.
    HAuthTicket request = SteamUser.GetAuthSessionTicket(buffer, buffer.Length, out uint ticketSize, ref identity);
    Array.Resize(ref buffer, (int)ticketSize);

    // Set request callback.
    TaskCompletionSource<string> getAuthTicketTask = new TaskCompletionSource<string>();
    Callback<GetAuthSessionTicketResponse_t> callback = Callback<GetAuthSessionTicketResponse_t>.Create((GetAuthSessionTicketResponse_t response) =>
    {
    if (response.m_hAuthTicket == request && response.m_eResult == EResult.k_EResultOK)
    {
    string sessionTicket = BitConverter.ToString(buffer).Replace("-", string.Empty);
    getAuthTicketTask.TrySetResult(sessionTicket);
    }
    else
    {
    getAuthTicketTask.TrySetResult(null);
    }
    });

    // Return Steam auth ticket.
    string authTicket = await getAuthTicketTask.Task;
    if (string.IsNullOrEmpty(authTicket))
    {
    resultCallback?.Invoke(Result<string>.CreateError(ErrorCode.UnknownError, "Failed to get Steam Auth Ticket"));
    }
    else
    {
    resultCallback?.Invoke(Result<string>.CreateOk(authTicket));
    }
    }
    #endif
  2. OnLoginWithSteamButtonClicked() 関数を以下の更新されたコードに置き換えます。このコードは Steam 認証チケットを取得し、それをプラットフォームトークンとして使用して AGS にログインします。ログイン試行後、ログインメニューは結果を処理し、プレイヤーをメインメニューにリダイレクトするか、エラーメッセージを表示します。Steam は WebGL ビルドではサポートされていないため、必ず #if !UNITY_WEBGL でラップしてください。

    #if !UNITY_WEBGL
    private void OnLoginWithSteamButtonClicked()
    {
    LoginMenu_Starter loginMenu = MenuManager.Instance.GetCurrentMenu() as LoginMenu_Starter;
    if (!loginMenu)
    {
    return;
    }

    loginMenu.OnRetryLoginClicked = OnLoginWithSteamButtonClicked;
    loginMenu.WidgetSwitcher.SetWidgetState(AccelByteWarsWidgetSwitcher.WidgetState.Loading);

    // Get Steam token to be used as platform token
    GetSteamAuthTicket((Result<string> result) =>
    {
    if (result.IsError)
    {
    loginMenu.OnLoginCompleted(Result<TokenData, OAuthError>.CreateError(new OAuthError() { error = result.Error.Message }));
    return;
    }

    // Log in to AccelByte with the Steam auth ticket
    LoginWithOtherPlatform(result.Value, PlatformType.Steam, loginMenu.OnLoginCompleted);
    });
    }
    #endif

リソース