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 콘솔