XStoreGetUserCollectionsIdAsync

获取客户收藏 ID。 然后,可以使用此 ID 通过 B2B 调用验证您自己的服务中的用户权利。 此 API 用于管理来自服务的产品中概述的流程。

语法

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

参数

storeContextHandle _In_
类型:XStoreContextHandle

XStoreCreateContext 返回的用户的应用商店上下文句柄。

serviceTicket _In_z_
类型:char*

一个 Azure 票证,后端服务可用来授权用户和服务。 这允许您从服务取回票证,您可以将其中继到自己的服务器。 然后您的服务器可以存储它并将它用于 B2B 调用以检查所有权或授予权限。

publisherUserId _In_z_
类型:char*

开发人员生成的字符串旨在将当前用户标识为属于游戏、开发人员或发布者服务的成员或来宾。 此字符串的内容由开发人员确定,可能留空。

async _Inout_
类型:XAsyncBlock*

用于定义正在进行的异步工作的 XAsyncBlockXAsyncBlock 可用于轮询调用的状态和检索调用结果。 有关详细信息,请参阅 XAsyncBlock

返回值

类型:HRESULT

HRESULT 成功或错误代码。

备注

在电脑上,此 API 将为当前登录到 Microsoft Store 的用户返回信息,如果启用了 Xbox 服务,则不一定是正在玩游戏的用户。 如果游戏位于 Xbox 主机上或在电脑上启用了 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->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;
    }
}

要求

头文件:XStore.h(包含在 XGameRuntime.h 中)

库:xgameruntime.lib

支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机

另请参阅

XStore
XStoreGetUserCollectionsIdResult
管理来自服务的产品