다음을 통해 공유


XStoreGetUserCollectionsIdAsync

고객 컬렉션 ID를 가져옵니다. 그런 다음 이 ID를 사용하여 B2B 호출을 통해 자신의 서비스에서 사용자의 권한을 확인할 수 있습니다. 이 API는 서비스에서 제품 권한 관리에 설명된 흐름에서 사용됩니다.

구문

HRESULT XStoreGetUserCollectionsIdAsync(  
         const XStoreContextHandle storeContextHandle,  
         const char* serviceTicket,  
         const char* publisherUserId,  
         XAsyncBlock* async  
)  

매개 변수

storeContextHandle _In_
형식: XStoreContextHandle

XStoreCreateContext가 반환하는 사용자의 Microsoft Store 컨텍스트 핸들입니다.

serviceTicket _In_z_
형식: char*

백 엔드 서비스가 사용자 및 서비스에 권한을 부여하는 데 사용하는 Azure 티켓입니다. 그 결과 서비스에서 티켓을 다시 가져오고, 이를 자신의 고유 서버에 릴레이할 수 있습니다. 그러면 서버는 티켓을 저장하고 B2B 호출에 이용해 소유권을 확인하거나 액세스 권한을 부여할 수 있습니다.

publisherUserId _In_z_
형식: char*

개발자가 생성한 문자열은 현재 사용자를 게임, 개발자 또는 퍼블리셔에 속한 서비스의 구성원 또는 게스트로 식별하기 위해 사용됩니다. 이 문자열의 내용은 개발자에 의해 결정되며 비워 둘 수 있습니다.

async _Inout_
형식: XAsyncBlock*

수행할 비동기 작업을 정의하는 XAsyncBlock입니다. 호출의 상태를 폴링하고 호출 결과를 검색하기 위해 사용할 수 있는 XAsyncBlock입니다. 자세한 내용은 XAsyncBlock을 참조하세요.

반환 값

형식: HRESULT

HRESULT 성공 또는 오류 코드입니다.

설명

PC에서 이 API는 현재 스토어에 로그인한 사용자에 대한 정보를 반환하며 Xbox 서비스가 활성화된 경우 반드시 게임을 플레이하는 사용자에 대한 정보는 아닙니다. 타이틀이 Xbox 콘솔에 있거나 PC에서 활성화된 Xbox 서비스에 있는 경우 XSTS 위임 인증을 사용하여 컬렉션 및 라이선스 미리 보기 엔드포인트에 대한 B2B 호출을 수행하여 활성 플레이 사용자의 자격을 확인하는 것이 좋습니다.

사용자의 컬렉션 ID와 이 함수의 실행 결과를 함께 검색하려면, 이 함수 호출 후 XStoreGetUserCollectionsIdResult를 호출합니다. 사용자의 컬렉션 ID 크기를 검색하려면 XStoreGetUserCollectionsIdResultSize를 호출합니다. 결과 크기를 알면 더 효율적으로 검색할 수 있습니다.

다음 코드 조각은 고객 컬렉션 ID의 검색 예를 보여줍니다.

void CALLBACK GetUserCollectionsIdCallback(XAsyncBlock* asyncBlock)
{
    size_t size;
    HRESULT hr = XStoreGetUserCollectionsIdResultSize(
        asyncBlock,
        &size);

    if (FAILED(hr))
    {
        printf("Failed retrieve the user collection ID size: 0x%x\r\n", hr);
        return;
    }

    char* result = new char[size];
    hr = XStoreGetUserCollectionsIdResult(
        asyncBlock,
        size,
        result);

    if (FAILED(hr))
    {
        printf("Failed retrieve the user collection ID result: 0x%x\r\n", hr);
        delete[] result;
        return;
    }

    printf("result: %s\r\n", result);

    delete[] result;
}

void GetUserCollectionsId(XStoreContextHandle storeContextHandle, XTaskQueueHandle taskQueueHandle, const char* serviceTicket, const char* publisherUserId)
{
    auto asyncBlock = std::make_unique<XAsyncBlock>();
    ZeroMemory(asyncBlock.get(), sizeof(*asyncBlock));
    asyncBlock->queue = taskQueueHandle;
    asyncBlock->context = taskQueueHandle;
    asyncBlock->callback = GetUserCollectionsIdCallback;

    HRESULT hr = XStoreGetUserCollectionsIdAsync(
        storeContextHandle,
        serviceTicket,
        publisherUserId,
        asyncBlock.get());

    if (FAILED(hr))
    {
        printf("Failed to get user collections ID: 0x%x\r\n", hr);
        return;
    }

    // Wait a while for the callbacks to run
    Sleep(5000);
}

요구 사항

헤더: XStore.h(XGameRuntime.h에 포함됨)

라이브러리: xgameruntime.lib

지원되는 플랫폼: Windows, Xbox One 패밀리 콘솔 및 Xbox Series 콘솔

참고 항목

XStore
XStoreGetUserCollectionsIdResult
서비스에서 제품 관리