> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XStoreGetUserCollectionsIdAsync

> XStoreGetUserCollectionsIdAsync

# XStoreGetUserCollectionsIdAsync

Obtiene un identificador de colecciones del cliente.  Este identificador se puede usar después para validar el derecho de un usuario desde su propio servicio con una llamada B2B.  Esta API se usa en el flujo descrito en [Administración de productos desde sus servicios](https://learn.microsoft.com/gaming/gdk/docs/store/commerce/service-to-service/service-to-service-nav).

## Sintaxis

```cpp theme={null}
HRESULT XStoreGetUserCollectionsIdAsync(  
         const XStoreContextHandle storeContextHandle,  
         const char* serviceTicket,  
         const char* publisherUserId,  
         XAsyncBlock* async  
)  
```

### Parámetros

*storeContextHandle*   \_In\_\
Tipo: XStoreContextHandle

El identificador del contexto de la tienda para el usuario devuelto por [XStoreCreateContext](/reference/system/xstore/functions/xstorecreatecontext).

*serviceTicket*   \_In\_z\_\
Tipo: char\*

Un vale de Azure que puede usar el servicio de back-end para autorizar al usuario y al servicio. Esto le permite recibir un vale del servicio, que puede retransmitir a sus propios servidores. Su servidor puede almacenarlo y usarlo para llamadas B2B, ya sea para comprobar la propiedad o para conceder acceso.

*publisherUserId*   \_In\_z\_\
Tipo: char\*

Una cadena generada por el desarrollador destinada a identificar al usuario actual como miembro o invitado de un servicio que pertenece al juego, al desarrollador o al editor. El contenido de esta cadena lo determina el desarrollador y puede dejarse en blanco.

*async*   \_Inout\_\
Tipo: [XAsyncBlock\*](/reference/system/xasync/structs/xasyncblock)

Un [XAsyncBlock](/reference/system/xasync/structs/xasyncblock) que define el trabajo asincrónico que se está realizando. El [XAsyncBlock](/reference/system/xasync/structs/xasyncblock) se puede usar para sondear el estado de la llamada y recuperar los resultados de la llamada. Consulte [XAsyncBlock](/reference/system/xasync/structs/xasyncblock) para obtener más información.

### Valor devuelto

Tipo: HRESULT

HRESULT de operación correcta o código de error.

## Comentarios

En PC, esta API devolverá información del usuario que ha iniciado sesión actualmente en la tienda y no necesariamente del usuario que está jugando a su juego si los servicios de XBOX están habilitados. Si su título está en la consola XBOX o los servicios de XBOX están habilitados en el PC, se recomienda realizar llamadas B2B a los puntos de conexión de colecciones y vista previa de licencias mediante la autorización delegada XSTS para asegurarse de que está comprobando los derechos del usuario que está jugando activamente.

Para recuperar el identificador de colección del usuario, así como el resultado de la ejecución de esta función, llame a [XStoreGetUserCollectionsIdResult](/reference/system/xstore/functions/xstoregetusercollectionsidresult) después de llamar a esta función. Para recuperar el tamaño del identificador de colección del usuario, llame a [XStoreGetUserCollectionsIdResultSize](/reference/system/xstore/functions/xstoregetusercollectionsidresultsize). Conocer el tamaño del resultado le permitirá recuperarlo de forma más eficiente.

El siguiente fragmento de código muestra un ejemplo de recuperación de un identificador de colecciones del cliente.

```cpp theme={null}
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;
    }
}
```

## Requisitos

**Encabezado:** XStore.h (incluido en XGameRuntime.h)

**Biblioteca:** xgameruntime.lib

**Plataformas compatibles:** Windows, consolas de la familia XBOX One y consolas XBOX Series

## Documentación conceptual

* [Solicitud de un identificador de tienda de usuario para la autenticación de servicio a servicio](/publishing/xstore-commerce/xstore-requesting-userstoreid)

## Consulte también

[XStore](/reference/system/xstore/xstore_members)\
[XStoreGetUserCollectionsIdResult](/reference/system/xstore/functions/xstoregetusercollectionsidresult)\
[Administración de productos desde sus servicios](https://learn.microsoft.com/gaming/gdk/docs/store/commerce/service-to-service/service-to-service-nav)


## Related topics

- [XStoreGetUserCollectionsIdResult](/es/reference/system/xstore/functions/xstoregetusercollectionsidresult.md)
- [XStoreGetUserCollectionsIdResultSize](/es/reference/system/xstore/functions/xstoregetusercollectionsidresultsize.md)
- [Solicitud de un identificador de la Tienda del usuario para la autenticación de servicio a servicio](/es/publishing/xstore-commerce/xstore-requesting-userstoreid.md)
- [Información general sobre el comercio de XStore](/es/publishing/xstore-commerce/xstore-commerce-overview.md)
- [XStore](/es/reference/system/xstore/xstore_members.md)
