다음을 통해 공유


XStoreQueryLicenseTokenAsync

권한의 유효성 검사 및 B2B 호출 수행을 위해 게임 서비스에 전달하는 불투명 JSON 웹 토큰을 호출 게임에 제공합니다. 자세한 내용은 라이선스 토큰 개요를 참조하세요.

구문

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 웹 토큰과 이 함수의 실행 결과를 함께 검색하려면, 이 함수 호출 후 XStoreQueryLicenseTokenResult를 호출합니다. JSON 웹 토큰 크기를 검색하려면 이 함수 호출 후 XStoreQueryLicenseTokenResultSize를 호출합니다. 토큰 크기를 알면 더 효율적으로 검색할 수 있습니다.

라이선스 토큰은 Base64로 인코딩된 JSON 웹 토큰입니다. 토큰의 페이로드는 유효성 검사를 위해 서버에서 사용할 수 있는 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