メインコンテンツに移動

アーキテクチャの考慮事項

Client->Server vs. Server->Server

すべての k-ID API 呼び出しには、有効な k-ID API トークン、または単に API キー自体を含む Authorization ヘッダーが必要です。k-ID API トークンは、カスタマイズ可能なゲームバックエンドにアクセスできない小規模なスタジオのゲームと k-ID を統合するために役立ちます。この場合、k-ID API はゲームクライアントから直接呼び出されます。

例えば、k-ID Unreal Sampleは、API トークンとクライアントからの直接的な k-ID 呼び出しを使用しているため、開発者がローカルで簡単に実行できるようになっています。一方で、k-ID のほとんどのデプロイメントは、スタジオが管理するゲームサーバーの背後から行われます。これは、API キーを不正利用から保護するために強く推奨されます。この場合、API トークンは不要で、すべての API 呼び出しに対して Authorization ヘッダーとして API キーを使用できます。

k-IDトークンの発行

クライアントトークンは、/auth/issue-token API から作成されます。/auth/issue-token API 自体も Authorization ヘッダーを必要としますが、この場合はゲームの k-ID API キーが必要です。

Getting a client token from the client in Unreal C++
void UKidWorkflow::Initialize(TFunction<void(bool)> Callback)
{
FString payload = TEXT("{ \"clientId\": \"") + ClientId + TEXT("\"}");


HttpRequestHelper::PostRequestWithAuth(BaseUrl +
TEXT("/auth/issue-token"), payload, ApiKey,
[this, Callback](FHttpResponsePtr Response, bool bWasSuccessful)
{
if (bWasSuccessful && Response.IsValid())
{
TSharedPtr<FJsonObject> JsonResponse;
TSharedRef<TJsonReader<>> Reader =
TJsonReaderFactory<>::Create(Response->GetContentAsString());
if (FJsonSerializer::Deserialize(Reader, JsonResponse))
{
AuthToken = JsonResponse->GetStringField(TEXT("accessToken"));
UE_LOG(LogTemp, Log, TEXT("AuthToken generated: %s"), *AuthToken);
}
}
Callback(bWasSuccessful);
});
}

ゲームの信頼性とキャッシュ

k-ID API は高い可用性を持っていますが、サーバー間通信で k-ID API を呼び出す際には、信頼性とフォールトトレランス(例: サーキットブレーカー)の一般的なパターンを実装することが推奨されます。すべてのプレイヤーが Session を必要とするため、k-ID サービスに問題が発生する可能性が極めて低い場合でも、新規プレイヤーおよび既存プレイヤーがブロックされないようにするための方法をゲームに実装する必要があります。

キャッシュさらたセッション

Session はローカルまたはクラウドストレージにキャッシュされ、プレイヤーのアカウントに関連付けることができます。ゲームが再起動するたびに /session/get API からセッションを更新することが推奨されますが、これは必須ではありません。k-ID API に問題が発生した場合、更新は後回しにすることができます。キャッシュされたセッションを使用して、問題が解決するまで k-ID API に接続せずに権限を管理できます。

デフォルトセッション

新しいプレイヤーに対して、各管轄地域ごとのデフォルトの権限をゲームサーバーにキャッシュしておくことが可能です。これにより、k-ID サービスに問題が発生した場合でも、新しいプレイヤーに対して適切なデフォルト設定を提供できます。/age-gate/get-default-permissions API は、管轄地域ごとのデフォルト権限を返します。デフォルトの権限には、特定のゲーム用に設定されたすべての設定が含まれており、保護者によって管理されていないため、フォールバックとして機能します。キャッシュされたデフォルトの k-ID 権限は、他のチャネル(例: リモート設定)を通じてゲームに配信することもできます。