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

キャッシュされたリフレッシュトークンを使用して再ログインする

Last updated on February 4, 2026

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

概要

AccelByte Gaming Services (AGS) Game SDK を使用すると、ゲーム開発者は再ログイン機能を実装できるため、ゲーム内のユーザーはキャッシュされたリフレッシュトークンを使用してログイン状態を維持できます。この機能は、サードパーティサービスがダウンしているか、メンテナンス中の場合にプレイヤーを認証するのに役立ちます。ユーザーはリフレッシュトークンを使用して 24 時間ログインできます。

実装

AGS Game SDK は、AGS User API の LoginWithOtherPlatform 関数を使用して、最初にプレイヤーを正常にログインさせます。ログインが成功すると、リフレッシュトークンが生成され、自動的にキャッシュされます。キャッシュには明示的な呼び出しは必要ありません。その後、プラットフォームサービスがダウンしているか利用できない場合に ReloginWithOtherPlatform 関数を使用でき、再ログイン API は最後に生成されたプラットフォーム refresh_token を使用して AGS プラットフォームにログインします。

Steam サービスを使用した実装の例を以下に示します。

//まず Steam を使用してログインを試みます
FApiClientPtr ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient();
FString SteamTicket = GetSteamTicket(); // UnrealEngine Online Subsystem Steam を使用
bool bLoginDone = false;
bool bLoginUsingSteamAccountSuccess = false;
ApiClient->User.LoginWithOtherPlatform(EAccelBytePlatformType::Steam, SteamTicket,
FVoidHandler::CreateLambda([&]()
{
bLoginDone = true;
bLoginUsingSteamAccountSuccess = true;
}),
FErrorHandler::CreateLambda([&](int32 Code, FString Message)
{
bLoginDone = true;
}));

WaitUntil([&]() { return bLoginDone; }, "Waiting...");

FString SteamID = GetSteamUserId(); // Steamworks を使用

/// 例:
/// FString GetSteamUserId()
/// {
/// SteamID SteamID = SteamUser()->GetSteamID();
/// uint64 SteamIdLong = SteamID.ConvertToUint64();
/// return FString::Printf(TEXT("%llu"), SteamIdLong);
/// }

if (bLoginUsingSteamAccountSuccess)
{
return;
}

// Steam アカウントを使用したログインが何らかの理由で失敗した場合(例:Steam API がダウンしている)
// この例を使用して、キャッシュされたリフレッシュトークンを使用して再ログインします
bool bReloginDone = false;
bool bReloginSuccess = false;
ApiClient->User.TryRelogin(SteamID,
FVoidHandler::CreateLambda([&]()
{
bReloginDone = true;
bReloginSuccess = true;
}),
FErrorHandler::CreateLambda([&](int32 Code, FString Message)
{
bReloginDone = true;
}));
WaitUntil([&]() { return bReloginDone; }, "Waiting...");

On this page