> ## 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.

# Solicitud de un User Store ID con tokens X u OAuth 2.0

> Genere User Store IDs en su servicio mediante OAuth 2.0 o tokens X de XBOX (XSTS), sin intercambiar tokens a través del cliente del juego para la autenticación.

En este artículo se describe cómo su servicio puede generar User Store IDs directamente, sin intercambiar tokens de acceso y claves a través del cliente del juego. Este enfoque es útil para:

* Experiencias en las que no hay un cliente del juego dentro del flujo
* Vincular la cuenta XBOX del usuario a la cuenta que su propio servicio tiene para el usuario
* Juegos y servicios que ya usan la autenticación con tokens de seguridad de XBOX (XSTS o tokens X) para las llamadas de cliente a servicio y de servicio a servicio

Para obtener información general sobre los User Store IDs, consulte [Solicitud de un User Store ID para la autenticación de servicio a servicio](/publishing/xstore-commerce/xstore-requesting-userstoreid).

## Requisito de token X

Este proceso requiere el uso de un token X de autenticación delegada para identificar al usuario que representa el User Store ID.

Para obtener más información sobre los tokens X de autenticación delegada y cómo crearlos, consulte la documentación "Title service calls to XBOX services".

## Requisitos de OAuth 2.0 para generar los User Store IDs

Si su servicio usa OAuth para que el usuario inicie sesión con su cuenta de Microsoft (MSA), se requiere lo siguiente:

* El usuario debe tener una identidad de XBOX vinculada a su cuenta de Microsoft, ya que las credenciales de OAuth deben intercambiarse por un token X.
* El ámbito de OAuth que solicite debe incluir tanto `xboxlive.signin` como `xboxlive.offline_access` para garantizar el consentimiento adecuado del usuario para este flujo y la capacidad de recuperar el token X necesario.

Para obtener más información sobre el uso del inicio de sesión de los servicios de XBOX con OAuth en su servicio, consulte la documentación "XBOX services sign-in for title websites".

## Pasos al usar credenciales de OAuth 2.0

Con OAuth, obtiene el consentimiento del usuario e intercambia las credenciales de OAuth por un token X para su usuario de confianza (relying party). Después, continúe con el mismo flujo descrito en [Pasos al usar tokens X](#steps-when-using-x-tokens).

Esquema del flujo para intercambiar credenciales de OAuth por un token X:

1. Obtenga el código de autorización de OAuth 2.0
2. Intercambie el código de autorización por un token RPS (también denominado token de acceso de cuenta de Microsoft)
3. Intercambie el token RPS por un XBOX User Token
4. Intercambie el XBOX User Token por un token X para su propio usuario de confianza (relying party)
5. Use el token X en [Pasos al usar tokens X](#steps-when-using-x-tokens).

Para obtener todos los detalles de implementación, consulte la documentación "XBOX services sign-in for title websites".

## Pasos al usar tokens X

Una vez que tenga un token X que identifique al usuario para su usuario de confianza (relying party), use su notificación `DelegationToken` para crear un token X de autenticación delegada. El token X inicial puede proceder del cliente del juego o del flujo de OAuth 2.0.

Esquema del flujo para crear un token X de autenticación delegada:

1. Extraiga la notificación DelegationToken (`dlt`) del token X del usuario.
2. Obtenga un Service Token del servicio XSAS usando su certificado de socio comercial.
3. Intercambie el DelegationToken, el Service Token y el usuario de confianza (relying party) de destino (consulte la tabla) por un token X de autenticación delegada.

Para obtener todos los detalles de implementación sobre cómo crear tokens X de autenticación delegada, consulte la documentación "Title service calls to XBOX services".

En el paso 3, el usuario de confianza (relying party) que use depende de si va a generar un User Collections ID o un User Purchase ID para el usuario:

| Tipo de User Store ID                     | Usuario de confianza del token X de autenticación delegada | URI para crear el User Store ID                                   |
| ----------------------------------------- | ---------------------------------------------------------- | ----------------------------------------------------------------- |
| User Collections ID (`UserCollectionsId`) | `http://licensing.xboxlive.com`                            | `https://collections.mp.microsoft.com/v7.0/beneficiaries/me/keys` |
| User Purchase ID (`UserPurchaseId`)       | `http://mp.microsoft.com/`                                 | `https://purchase.mp.microsoft.com/v7.0/users/me/keys`            |

## Solicitud

Una vez que tenga el token X de autenticación delegada, solicite el User Store ID usando el URI correspondiente al servicio al que va a llamar.

### Sintaxis de la solicitud

| Método | URI de solicitud                                          |
| ------ | --------------------------------------------------------- |
| `POST` | `collections.mp.microsoft.com/v7.0/beneficiaries/me/keys` |
| `POST` | `purchase.mp.microsoft.com/v7.0/users/me/keys`            |

### Encabezado de solicitud

| Encabezado       | Tipo     | Descripción                                                                                              |
| ---------------- | -------- | -------------------------------------------------------------------------------------------------------- |
| `Authorization`  | `string` | Obligatorio. Token X de autenticación delegada con el formato `XBL3.0 x=[User Hash];[Token]`             |
| `Host`           | `string` | Debe coincidir con el host del URI al que se llama                                                       |
| `Content-Length` | `number` | La longitud del cuerpo de la solicitud.                                                                  |
| `Content-Type`   | `string` | Especifica el tipo de solicitud y respuesta. Actualmente, el único valor admitido es `application/json`. |

### Cuerpo de la solicitud

| Parámetro         | Tipo     | Descripción                                                                                                                                                                                                                                                                                                                                                             | Obligatorio |
| ----------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| `serviceTicket`   | `string` | El Collections Access Token o el Purchase Access Token de su servicio, según cuál de los URI esté llamando. Para obtener información sobre cómo crear estos tokens de acceso, consulte [Descripción de los distintos tokens y URI de audiencia](/publishing/xstore-commerce/xstore-requesting-userstoreid#understanding-the-different-access-tokens-and-audience-uris). | Sí          |
| `publisherUserId` | `string` | Valor opcional que se incluye en el User Store ID para su propio seguimiento.                                                                                                                                                                                                                                                                                           | No          |

### Ejemplo de solicitud

```html theme={null}
POST https://collections.mp.microsoft.com/v7.0/beneficiaries/me/keys HTTP/1.1
Authorization: XBL3.0 x=13178812777611882182;eyJ...
Content-Length: 1352
Content-Type: application/json;
Host: collections.mp.microsoft.com
 
{
    "serviceTicket": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIn...",
    "publisherUserId": "CustomPublisherUserId"
}
```

## Respuesta

### Cuerpo de la respuesta

| Parámetro | Tipo     | Descripción                                                                                                        | Obligatorio |
| --------- | -------- | ------------------------------------------------------------------------------------------------------------------ | ----------- |
| `key`     | `string` | User Store ID que se puede usar para la autenticación de servicio a servicio con los servicios de Microsoft Store. | Sí          |

### Ejemplo de respuesta

```html theme={null}
HTTP/1.1 200 OK
Date: Wed, 23 Mar 2022 23:06:25 GMT
Content-Type: application/json; 
Content-Length: 1716
MS-CorrelationId: dd5be303-f9a0-408a-bd01-e8c63afa721a
MS-RequestId: 0b9c8e5e-dfdd-4cf8-bfbe-93a5be3a7f48
MS-CV: rqFUH3gA+UOmTyXe.0

{"key":"eyJhbGciOiJSUzI1NiIsImtpZCI6IjY..."}
```

## Consulte también

[Administración de productos desde sus servicios](/publishing/xstore-commerce/xstore-authenticating-service)

[Autenticación de su servicio con las API de Microsoft Store](/publishing/xstore-commerce/xstore-authenticating-service)

Title service calls to XBOX services

XBOX services sign-in for title websites

[Renovación de una clave de User Store ID](/publishing/xstore-commerce/xstore-renew-userstoreid)

[Biblioteca Microsoft.StoreServices](https://github.com/microsoft/Microsoft-Store-Services)

[Ejemplo de Microsoft.StoreServices](https://github.com/microsoft/Microsoft-Store-Services-Sample)


## Related topics

- [Renovación de una clave de User Store ID](/es/publishing/xstore-commerce/xstore-renew-userstoreid.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)
- [PFAuthenticationLoginWithGoogleAccountRequest](/es/services/playfab/api-references/c/pfauthenticationtypes/structs/pfauthenticationloginwithgoogleaccountrequest.md)
- [Autenticación de Microsoft Entra ID para las API de PlayFab](/es/services/playfab/identity/dev-identity/authentication/entra-id-api-authentication.md)
- [PFAuthenticationLoginWithGoogleAccountAsync](/es/services/playfab/api-references/c/pfauthentication/functions/pfauthenticationloginwithgoogleaccountasync.md)
