REST を使用した所有権検証

SDK を使用せずに所有権の検証を実行する RESTful エンドポイント

Epic Games Store Only

Ecom インターフェース では、所有権の確認のために 2 つの手法を用意しています。最初はオンライン手法です。

オンライン手法

オンライン手法は Epic Entitlement Service を直接統合します。オンライン手法は、信頼されているゲーム サーバーでの利用や、照合が単純なクライアント システムで安全性の低いチェックを行う場合に便利です。

ユーザーが特定のカタログ アイテムを所有しているか判断するには、EOS_Ecom_QueryOwnership を呼び出してサーバーからの所有権情報を取得します。コールバックはユーザーに関する情報を含む void ポインタを受けとります。

以下のパラメータを使って EOS_Ecom_QueryOwnershipOptions を呼び出します。

パラメータ

説明

ApiVersion

Set to EOS_ECOM_QUERYOFFERS_API_LATEST.

LocalUserId

ローカル ユーザーの Epic アカウント ID。

CatalogItemIds

EntitlementIds 内の要素の数。

CompletionDelegate

EOS_Achievements_OnUnlockAchievementsCompleteCallback シグネチャを使用した操作の完了時に呼び出されます。

CatalogNamespace

オプションの製品名前空間。

EOS は、リクエストされ EOS_Ecom_OnQueryOwnershipCallback 構造体に格納されたデータ (および void ポインタ) を使用してコールバック関数を呼び出します。この構造体は EOS_Ecom_EntitlementOwnership ユーザーの配列を含みます。サーバーが認識しない項目は所有されないものとして返されます。

オフライン手法

ふたつ目はオフライン手法です。この手法では、ユーザーが検証する署名されたトークンが提供されるか、またはサードパーティ サービスへ渡されます。所有権確認を行うサードパーティー サービスと統合する場合、外部サービスにユーザーのデータへのアクセス権を許可しないようにするために、オフライン チェックを推奨します。

所有権をチェックして、結果をローカルに数分間キャッシュするには、EOS_Ecom_QueryOwnershipToken を呼び出します。以下のパラメータを使用します。

パラメータ

説明

ApiVersion

Set to EOS_ECOM_QUERYOFFERS_API_LATEST.

LocalUserId

ローカル ユーザーの Epic アカウント ID。

CatalogItemIdCount

カタログ アイテムの数量。

CompletionDelegate

EOS_Achievements_OnUnlockAchievementsCompleteCallback シグネチャを使用した操作の完了時に呼び出されます。

CatalogNamespace

オプションの製品名前空間。

操作が完了すると、有効期限が 5 分の JSON Web Token (JWT) を含む EOS_Ecom_QueryOwnershipTokenCallbackInfo 構造体を受け取ります。

パブリック キーで JWT を照合し、Key ID を解凍するためにアンパックすることができます。Epic Games Services (EGS) の利用資格情報を確認するために、必要に応じてサードパーティー サービスに送信することもできます。

以下はリクエストの例です。このエンドポイントを使用します。

https://ecommerceintegration-public-service-ecomprod02.ol.epicgames.com/ecommerceintegration/api/public/publickeys/{kid}

以下はレスポンスの例です。

GET/ecommerceintegration/api/public/publickeys/pbvnNIE97vErdePGIRoG41h8hnP_2wIxG8xbwZCIj3g HTTP/1.1

Host: ecommerceintegration-public-service-ecomprod02.ol.epicgames.com

{

"kty":"RSA",

"e":"AQAB",

"kid": "pbvnNIE97vErdePGIRoG41h8hnP_2wIxG8xbwZCIj3g",

"n": "gcStqtD8XD9c9ifNuxXT9Xd_EEZLLCw34yxINRQPt0MxEWkoOFsuisRWGktSFtGrnUuQnp8GQY0k4Pyl_yDItWAcRtO7JUjrhQnxx3xXp_0P8xJMH1ny-RcxHF3bEJWhDzNW5PBpBjQTQZis-83499z-4OlNA7oUnDKEJkqNfzh4mMDFluPxvW_Hwpaw71nhzJI7-N-BdsPsLdqUANajLsFKq9fr06Lek_tm-6-RUxNPE3yS0x0UIsGyapA4Apcczz0xTzRDfwOkq_TyKGZiZc7vtgjkWnqdsCyXZC7dzKJvg0ggO3mKXhqZNNC_2pz24o1X_xCbG8rXtuvX8-ux-Q"

}

トークンの詳細

所有権検証トークンは、RS512 (SHA-512 を使用した RSA PKCS#1 署名、RSA キー サイズ 2048) を使用して署名された JWT です。トークンには以下の情報が含まれます。

クレーム

説明

jti

A unique identifier for this token に設定します。

sub

トークンのリクエストに使用されるアカウントのアカウント ID。

clid

トークのリクエストに使用されるクライアント ID。

ent

このトークンに対して照会されsた利用資格の配列。この値が空の場合、そのアカウントは指定された sandboxId に対してリクエストされたいずれの利用資格も持ちません。

iat

トークンの有効期限。

以下はフロー ダイアグラムです。

OwnershipVerificationFlow.png