XStoreQueryLicenseTokenAsync
資格の確認の B2B 呼び出しを行うためにゲームのサービスに渡すことができる非透過的な JSON Web トークンを呼び出し元ゲームに提供します。 詳細については、「ライセンス トークンの概要」を参照してください。
構文
HRESULT XStoreQueryLicenseTokenAsync(
const XStoreContextHandle storeContextHandle,
const char** productIds,
size_t productIdsCount,
const char* customDeveloperString,
XAsyncBlock* async
)
パラメーター
storeContextHandle _In_
型: XStoreContextHandle
XStoreCreateContext によって返されるユーザーの Microsoft Store コンテキスト ハンドル。
productIds _In_z_count_(productIdsCount)
型: char**
トークンを取得する製品 ID の配列。
productIdsCount _In_
型: size_t
productIds に渡された配列内の ID の数。
customDeveloperString _In_z_
型: char*
トークンにラウンドトリップされる値。 これは通常、サービスによって選択されます。 ユーザー ID やメール アドレスのようなものを挿入し、ライセンス トークン内のユーザーのトークンを追跡できます。 ライセンス トークンは、所有権の購入確認のように使用されます。
これは null または空の文字列にすることはできません。
async _Inout_
型: XAsyncBlock*
行われている非同期処理が定義されている XAsyncBlock。 XAsyncBlock を使用して、呼び出しのステータスをポーリングし、呼び出しの結果を取得できます。 詳細については、「XAsyncBlock」を参照してください。
戻り値
型: HRESULT
HRESULT 成功またはエラー コード。
解説
この関数の実行結果と JSON Web トークンを取得するには、この関数を呼び出した後で、XStoreQueryLicenseTokenResult を呼び出します。 JSON Web トークンのサイズを取得するには、この関数を呼び出した後で、XStoreQueryLicenseTokenResultSize を呼び出します。 トークンのサイズを把握することで、より効率的に取得することができます。
ライセンス トークンは、Base64 でエンコードされた JSON Web トークンです。 トークンのペイロードは、検証のためにサーバーで使用できる JSON 値に変換される、Base64 でエンコードされた文字列です。
次のコード スニペットでは、ライセンス トークンを取得する例を示します。
void CALLBACK QueryLicenseTokenCallback(XAsyncBlock* asyncBlock)
{
size_t size;
HRESULT hr = XStoreQueryLicenseTokenResultSize(
asyncBlock,
&size);
if (FAILED(hr))
{
printf("Failed retrieve the license token size: 0x%x\r\n", hr);
return;
}
char* result = new char[size];
hr = XStoreQueryLicenseTokenResult(
asyncBlock,
size,
result);
if (FAILED(hr))
{
printf("Failed retrieve the license token result: 0x%x\r\n", hr);
delete[] result;
return;
}
printf("result: %s\r\n", result);
delete[] result;
}
void QueryLicenseToken(XStoreContextHandle storeContextHandle, XTaskQueueHandle taskQueueHandle, const char** productIds, size_t productIdsCount, const char* customDeveloperString)
{
auto asyncBlock = std::make_unique<XAsyncBlock>();
ZeroMemory(asyncBlock.get(), sizeof(*asyncBlock));
asyncBlock->queue = taskQueueHandle;
asyncBlock->callback = QueryLicenseTokenCallback;
HRESULT hr = XStoreQueryLicenseTokenAsync(
storeContextHandle,
productIds,
productIdsCount,
customDeveloperString,
asyncBlock.get());
if (FAILED(hr))
{
printf("Failed to get license token: 0x%x\r\n", hr);
return;
}
}
要件
ヘッダー: XStore.h (XGameRuntime.h に含まれます)
ライブラリ: xgameruntime.lib
サポートされているプラットフォーム: Windows、Xbox One ファミリー本体、Xbox Series 本体