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

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

Last updated on July 15, 2026

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

Overview

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

important

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

Goals

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

Prerequisites

Web ログイン統合の場合

  • 有効な Steam デベロッパーアカウントと、Steamworks にログインできること。
  • 認証を設定し権限を管理するための AGS Admin Portal アカウント。
  • Player Portal と Launcher 用のパブリッシャーネームスペース。
  • Player Portal。
AGS Public Cloud

Web ログイン統合は現在、AGS Public 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 アカウント。
  • ゲームネームスペース。
  • AGS アイデンティティおよびアクセス管理 (IAM) クライアントに関する知識。

Steam アプリを設定する

Steam アプリを作成する

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

Steam Publisher Web API Key を作成する

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

Steam ログイン方式を設定する

Web ログイン

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

  2. サイドバーメニューで、Foundations > 3rd Party Integrations > 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 Web Login ページにリダイレクトされ、そこで Steam の認証情報を入力できます。

Steam web login test

注記

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

ゲーム内ログイン

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

  2. サイドバーメニューで、Foundations > 3rd Party Integrations > 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)

まず、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 オンラインサブシステムを使用するよう指示するには、以下の設定を追加します。

[OnlineSubsystem]
DefaultPlatformService=Steam

Unreal Engine にアプリケーションで Steam オンラインサブシステムを使用することを伝えたら、次に以下の設定を追加して OnlineSubsystemSteam モジュールを設定する必要があります。

[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480
注記

SteamDevAppId は、あなたの Steam ゲームの App ID です。

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

[/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 ゲームの 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 認証方式を実装する方法を紹介します。

IOnlineSubsystem は、DefaultEngine.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 FErrorHandler OnLoginErrorDelegate = FErrorHandler::CreateLambda([=](int32 ErrorCode, const FString& ErrorMessage) {
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

Troubleshooting

このセクションでは、サービス利用時に発生し得る一般的なエラーや問題と、その解決方法に関する推奨事項を紹介します。

設定の誤り

Unreal Engine の設定(DefaultEngine.ini に記載)で Steam App ID が誤っていたり、設定されていない場合、ゲームは Steam のログインサービスにアクセスできません。

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

Steam ログインが機能しない

Steam 側でアクセストークンが不足している場合、プレイヤーは Steam でのログインに失敗します。

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