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

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

Last updated on February 4, 2026

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

概要

このガイドは、認証されたSteamデベロッパーがSteamプレイヤーアカウントをAccelByte Gaming Services (AGS) に接続するのを支援することを目的としています。ゲームによっては、ここに記載されていないSteamサービス内の追加機能を設定する必要がある場合があります。Steamサービスの設定に関する完全な情報については、Steamの担当者に連絡し、Steamドキュメントを直接確認することをお勧めします。

important

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

目標

  • AGS SDKを使用してゲームのSteam認証方法を有効にする。
  • AGS Player Portalを使用してパブリッシャーウェブサイトのSteam認証方法を有効にする。

前提条件

ウェブログイン統合

  • 有効なSteamデベロッパーアカウントとSteamworksへのログイン機能。
  • 認証を設定し、権限を管理するためのAGS Admin Portalアカウント。
  • Player PortalとLauncher用のパブリッシャーnamespace。
  • Player Portal。
AGS Shared Cloud

ウェブログイン統合は現在AGS Shared Cloudでは利用できず、AGS Private Cloudでのみサポートされています。

ゲーム内ログイン統合

  • 有効なSteamデベロッパーアカウントとSteamworksへのログイン機能。
  • Unreal Engine Steam OSS。
    • UE V4.27以下: Unreal Engine OSS
    • UE V5.0: Unreal Engine OSS
  • Unity用のSteamworks.NET 20.2.0バージョン以上。
  • Unreal EngineまたはUnity用のSteamworksページからのSteamworks SDK。
  • 最新バージョンのAGS SDKがインポートされたUnityまたはUnrealゲームプロジェクト。
  • 認証を設定し、権限を管理するためのAGS Admin Portalアカウント。
  • ゲームnamespace。
  • AGS Identity and Access Management (IAM) Clientsに関する知識。

Steamアプリの設定

Steamアプリの作成

Steamworksアカウントの下にSteamアプリケーションを作成します。Steamアプリケーションの詳細については、Steamのアプリケーションドキュメントを参照してください。

Steam Publisher Web API Keyの作成

Steamworksアカウントを使用してグループの下にPublisher Web API Keyを作成します。Steam Publisher Web API Keyの詳細については、SteamのWeb API概要ドキュメントを参照してください。

Steamログイン方法の設定

ウェブログイン

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

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

  3. Auth & Account Linkingページで、+ Add Newボタンをクリックします。

    AGS Admin Portal Steam Web click to add new login

  4. ログイン方法オプションのリストから、Steam Webを選択します。

    AGS Admin Portal click to add Steam web login

  5. Steamworks PortalからSteam Publisher Web API Keyを入力し、Redirect URIにドメインURL(例: https://prod.gamingservices.accelbyte.io)を入力して、**Create**ボタンをクリックして完了します。

    注記

    無効なSteam Publisher Web API Keyを入力すると、「Steam Web API Key is invalid」というエラーメッセージが表示されます

    AGS Admin Portal fill in Steam web API key

  6. Integrationの横にあるActivateをクリックします。表示されるポップアップで、Activateをクリックして確認します。

    AGS Admin Portal Steam web login activate

試してみる

  1. Player Portalに移動し、Loginボタンをクリックします。

    AGS Player Portal Steam web login page test

  2. Steamアイコンが見つからない場合は、More login optionsをクリックできます。

    AGS Player Portal Steam web more login options test

  3. Login with Steamをクリックします。

    AGS Player Portal Steam Login button test

Steam認証情報を入力できるSteam Webログインページにリダイレクトされます。

Steam web login test

注記

現在、プレイヤーはSteamアカウントを既存のAGSアカウントにリンクするか、新しいアカウントにリンクするよう求められます。AccelByteでは、プレイヤーがヘッドレスアカウントでPlayer Portalに直接ログインできるように、これを設定可能にする取り組みが進行中です。

ゲーム内ログイン

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

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

  3. Auth & Account Linkingページで、+ Add Newボタンをクリックします。

    AGS Admin Portal in-game click to add new login

  4. Steam SDKをクリックします。

    AGS Admin Portal click to add Steam SDK login

  5. Steamworks PortalからApp IDSteam Publisher Web API Keyを入力します。Redirect URIhttp://127.0.0.1を入力し、**Create**ボタンをクリックします。

    注記

    無効なSteam Publisher Web API Keyを入力すると、「Steam Web API Key is invalid」というエラーメッセージが表示されます

    AGS Admin Portal fill in Steam SDK API key

  6. Integrationの横にあるActivateをクリックします。表示されるポップアップで、Activateをクリックして確認します。

    AGS Admin Portal Steam SDK login activate

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

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

ゲーム内ログイン手順

各ゲームエンジンの設定は異なります。利用可能なタブからゲームエンジンを選択してください。

ゲーム内ログイン統合 (Unreal)

AGS SDKを使用してSteamログインを統合し、プレイヤーがSteam認証情報を使用してゲームにログインできるようにすることができます。

準備と設定 (Unreal)

依存関係の追加 (Unreal)

まず、これらのpublic依存関係モジュールを追加する必要があります: OnlineSubsystemOnlineSubsystemSteamSteamworks。これらは、Unreal Engine内でSteamオンラインサブシステムを使用するためにプロジェクトを統合するために必要なすべての依存関係です。

public ABThirdPartyLogin(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" , "AccelByteUe4Sdk", "Slate", "SlateCore" });

PrivateDependencyModuleNames.AddRange(new string[] { "Json", "OnlineSubsystem", "OnlineSubsystemSteam", "Steamworks", "HTTP" });
}

<YourProject>.Target.cs<YourProjectEditor>.Target.csファイル内にOnlineSubsystemSteamを追加します。

public ABThirdPartyLoginTarget( TargetInfo Target) : base(Target)
{
Type = TargetType.Game;
DefaultBuildSettings = BuildSettingsVersion.V2;
ExtraModuleNames.AddRange( new string[] { "ABThirdPartyLogin", "OnlineSubsystem", "AccelByteUe4Sdk", "OnlineSubsystemSteam" } );
}


public ABThirdPartyLoginEditorTarget( TargetInfo Target) : base(Target)
{
Type = TargetType.Editor;
DefaultBuildSettings = BuildSettingsVersion.V2;
ExtraModuleNames.AddRange( new string[] { "ABThirdPartyLogin", "OnlineSubsystem", "AccelByteUe4Sdk", "OnlineSubsystemSteam" } );
}

Steamログインのプロジェクト設定 (Unreal)

DefaultEngine.iniファイル内に、Steam設定用のいくつかの変数を追加する必要があります。プロジェクトを開いたときにSteamが自動的に起動するようにするには、この設定が必要です。

Unreal EngineにSteam Online Subsystemを使用するように指示するには、以下の設定を追加します:

[OnlineSubsystem]
DefaultPlatformService=Steam

Unreal Engineにアプリケーションでsteam Online Subsystemを使用することを伝えたので、次の設定を追加してOnlineSubsystemSteamモジュールを設定する必要があります:

[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480
注記

SteamDevAppIdはSteam Game App IDです。

アプリケーションの接続用にSteamクラスをNet Driverに指定します:

[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"

AGSのプロジェクト設定 (Unreal)

DefaultEngine.iniにAGS認証情報を追加します:

[/Script/AccelByteUe4Sdk.AccelByteSettings]
ClientId=<Your Client_Id>
ClientSecret=<Your Client_Secret>
Namespace=<Your Namespace>
PublisherNamespace=<Your Publisher Namespace>
RedirectURI="http://127.0.0.1"
BaseUrl="https://prod.gamingservices.accelbyte.io"
AppId=480
IamServerUrl="https://prod.gamingservices.accelbyte.io/iam"
PlatformServerUrl="https://prod.gamingservices.accelbyte.io/platform"
注記

AppIdはSteam Game App IDです。

推奨されるDefaultEngine.ini設定 (Unreal)

これらの手順に従った後、DefaultEngine.iniファイルは次の例のようになります:

[OnlineSubsystem]
DefaultPlatformService=Steam

[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=<your steam game app id>

[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"

[/Script/AccelByteUe4Sdk.AccelByteSettings]
ClientId=<Your IAM_Client_Id>
ClientSecret=<Your IAM_Client_Secret>
Namespace=<Your Namespace>
PublisherNamespace=<Your Publisher Namespace>
RedirectURI="http://127.0.0.1"
BaseUrl="https://prod.gamingservices.accelbyte.io"
AppId=<your steam game app id>
IamServerUrl="https://prod.gamingservices.accelbyte.io/iam"
PlatformServerUrl="https://prod.gamingservices.accelbyte.io/platform"

サンプルコード実装 (Unreal)

次に、サンプルコードを使用してゲームのSteam認証方法を実装する方法を示します。

IOnlineSubsystemDefaultEngine.iniで定義されたDefaultPlatformService値を読み取ります。IdentityInterfaceは、ユーザーアカウントに関連するこれらのサービスとのやり取りを管理し、ユーザー認証とアクセストークンの取得を可能にします。操作が成功すると、AGS SDKのLoginWithOtherPlatform関数がIdentity Interfaceから取得した認証トークンを使用してサードパーティプラットフォームログインを処理します。

注記

AccelByte OnlineSubystem (OSS)からのAccelByteOnlineSubsystemPtrは、このガイドで取得できます。

UE_LOG(LogTemp, Warning, TEXT("%s"), TEXT("Begin Login"));
const IOnlineSubsystem* OnlineSubsystem = IOnlineSubsystem::Get();
if (OnlineSubsystem == nullptr)
{
FString Message = TEXT("Cannot login with no online subsystem set!");
UE_LOG(LogTemp, Warning, TEXT("%s"), *Message);
OnActionInfoUpdated.Broadcast(Message);//will get active OSS Platform Service
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;
}
APlayerController* MyPlayerController = UGameplayStatics::GetPlayerController(GetWorld(), 0);;

const ULocalPlayer* LocalPlayer = Cast<ULocalPlayer>(MyPlayerController->Player);
if (LocalPlayer == nullptr)
{
FString Message = TEXT("Can only login with native platform for local players");
UE_LOG(LogTemp, Warning, TEXT("%s"), *Message);
return;
}

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient(TEXT("YOUR_KEY"));
auto UserApi = ApiClient->GetUserApi().Pin();

const FVoidHandler OnLoginSuccessDelegate = FVoidHandler::CreateLambda([&]() {
FAccountUserData AccountUserData = ApiClient->CredentialsRef->GetAccountUserData();

FString AccountUserDataString;
FJsonObjectConverter::UStructToJsonObjectString(AccountUserData, AccountUserDataString);

FString Message = FString::Printf(TEXT("Login to AB Service Success : %s"), *AccountUserDataString);//Success Login to AB Service
});
const FCustomErrorHandler OnLoginErrorDelegate = FCustomErrorHandler::CreateLambda([=](int32 ErrorCode, const FString& ErrorMessage, const FJsonObject& ErrorObject) {
FString Message = FString::Printf(TEXT("Error Login to AB Service : %s"), *ErrorMessage);
});

const FOnLoginCompleteDelegate NativeLoginComplete = FOnLoginCompleteDelegate::CreateLambda([=]
(int32 LocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, const FString& Error) {
UE_LOG(LogTemp, Warning, TEXT("OnLoginComplete %s : %s"), bWasSuccessful ? TEXT("Success") : TEXT("Fail"), *Error);
FString Message = FString::Printf(TEXT("OnLoginComplete %s : %s"), bWasSuccessful ? TEXT("Success") : TEXT("Fail"), *Error);
OnActionInfoUpdated.Broadcast(Message);

if (bWasSuccessful)
{
const FString PlatformToken = OnlineIdentity->GetAuthToken(LocalPlayer->GetControllerId());
UE_LOG(LogTemp, Warning, TEXT("PlatformToken : %s"), *PlatformToken);
OnActionInfoUpdated.Broadcast(FString::Printf(TEXT("PlatformToken : %s"), *PlatformToken));//Will Obtained Auth Ticket from OnlineIdentity

UserApi->LoginWithOtherPlatform(EAccelBytePlatformType::Steam, PlatformToken, OnLoginSuccessDelegate, OnLoginErrorDelegate);
UE_LOG(LogTemp, Warning, TEXT("Request LoginWithOtherPlatform"));
OnActionInfoUpdated.Broadcast(TEXT("Request LoginWithOtherPlatform"));
}//this method will hitting the AccelByte endpoint and will return value after success
});
OnlineIdentity->AddOnLoginCompleteDelegate_Handle(LocalPlayer->GetControllerId(), NativeLoginComplete);
const bool bWaitForDelegate = OnlineIdentity->Login(LocalPlayer->GetControllerId(), Credentials);
if (!bWaitForDelegate)
{
FString Message = TEXT("The online subsystem couldn't login");
UE_LOG(LogTemp, Warning, TEXT("%s"), *Message);
}

FString Message = TEXT("Sending login request to native subsystem!");
UE_LOG(LogTemp, Warning, TEXT("%s"), *Message);
注記

Steam認証のplatform_tokenはAuth Ticketです。

このサンプルコードをプロジェクトに追加した後、プロジェクトをコンパイル、ビルド、実行します。以上です!

サンプルコードのテスト (Unreal)

以下の画像は、サンプルコードを使用したSteamでのログイン成功を示しています。

Steam login with sample code login Unreal success

トラブルシューティング

このセクションでは、サービスを使用する際に発生する可能性のある一般的なエラーと問題、およびそれらを解決する方法に関する推奨事項を見つけることができます。

設定ミス

Steam App IDがUnreal Engine設定(DefaultEngine.iniにあります)で正しくないか欠落している場合、ゲームはSteamログインサービスにアクセスできません。

  • DefaultEngine.iniファイルを再確認し、Steam App IDが正しく設定されていることを確認してください。

Steamログインが機能しない

Steam側でアクセストークンが欠落しているため、プレイヤーがSteamでログインできません。

  • Steamアプリがバックグラウンドで実行されていることを確認してください。