次の方法で共有


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*

行われている非同期処理が定義されている XAsyncBlockXAsyncBlock を使用して、呼び出しのステータスをポーリングし、呼び出しの結果を取得できます。 詳細については、「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 本体

関連項目

XStore

ライセンス トークンの概要

XStoreQueryLicenseTokenResult

XStoreQueryLicenseTokenResultSize