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

# Integración de la Plataforma universal de Windows con PlayFab

> Integre una aplicación de la Plataforma universal de Windows con PlayFab vinculando una cuenta de Windows Hello, iniciando la sesión de los jugadores y validando compras de la Tienda Windows.

Este tutorial le guía por tres puntos clave de integración entre PlayFab y la Plataforma universal de Windows (UWP).

> [!NOTE]
>
> Hemos creado un [repositorio de GitHub](https://github.com/PlayFab/UWPExample) con código de ejemplo para ilustrar cómo integrar la Plataforma universal de Windows con PlayFab.

Integrar la Plataforma universal de Windows (UWP) con PlayFab es muy sencillo. Realmente solo hay tres cosas de las que debe preocuparse:

1. Vincular una cuenta de Windows Hello a su cuenta de PlayFab.
2. Iniciar la sesión del jugador mediante Windows Hello.
3. Validar una compra realizada desde la Tienda Windows.

Veamos estos tres temas en orden.

## Vincular una cuenta de Windows Hello a su cuenta de PlayFab

Hay dos formas de vincular una cuenta de Windows Hello a su cuenta de PlayFab:

1. Puede crear una nueva cuenta de PlayFab con sus credenciales de Windows Hello.
2. Puede vincular credenciales de Windows Hello a su cuenta de PlayFab existente.

La que use depende de si Windows Hello es o no su método de autenticación principal.

### Crear una nueva cuenta con credenciales de Windows

Antes de comenzar este proceso, debe pedir al usuario su nombre de usuario de Windows.

A continuación, puede seguir estos pasos:

1. Llame a [KeyCredentialManager.RequestCreateAsync](https://learn.microsoft.com/en-us/uwp/api/windows.security.credentials.keycredentialmanager) para generar una nueva clave pública para este usuario.
2. Llame a [CryptographicBuffer.EncodeToBase64String](https://learn.microsoft.com/en-us/uwp/api/Windows.Security.Cryptography.CryptographicBuffer#Windows_Security_Cryptography_CryptographicBuffer_EncodeToBase64String_Windows_Storage_Streams_IBuffer_) para convertir el IBuffer anterior en una cadena.
3. Llame a `PlayFabClientAPI.RegisterWithWindowsHello`\<!-- [PlayFabClientAPI.RegisterWithWindowsHello](xref:titleid.playfabapi.com.client.authentication.registerwithwindowshello) --> con los siguientes parámetros obligatorios:
   * El nombre de usuario de Windows.
   * La clave pública codificada en Base 64 anterior.
4. Si el registro se realizó correctamente, el jugador habrá iniciado sesión. Recibirá un token de sesión que puede usar para autenticar al jugador con todas las demás API de PlayFab.
5. Además, ahora puede usar [HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha256)](https://learn.microsoft.com/en-us/uwp/api/windows.security.cryptography.core.hashalgorithmprovider#Windows_Security_Cryptography_Core_HashAlgorithmProvider_OpenAlgorithm_System_String_) para crear un proveedor de hash y aplicar un hash a la clave pública llamando a [hashProvider.HashData(publicKey)](https://learn.microsoft.com/en-us/uwp/api/windows.security.cryptography.core.hashalgorithmprovider#Windows_Security_Cryptography_Core_HashAlgorithmProvider_HashData_Windows_Storage_Streams_IBuffer_).
6. Convierta la clave pública con hash en una cadena codificada en Base 64 [(CryptographicBuffer.EncodeToBase64String(publicKeyHash))](https://learn.microsoft.com/en-us/uwp/api/Windows.Security.Cryptography.CryptographicBuffer#Windows_Security_Cryptography_CryptographicBuffer_EncodeToBase64String_Windows_Storage_Streams_IBuffer_) y almacene esta cadena y el nombre de usuario en la configuración de la aplicación. (ApplicationData.Current.LocalSettings.Values\["publicKeyHint"]). Esta sugerencia de clave pública se usa para volver a iniciar sesión.
7. El nombre de usuario también debe almacenarse en la configuración local del usuario para simplificar el inicio de sesión.

### Vincular credenciales de Windows a una cuenta de PlayFab existente

El proceso para vincular credenciales de Windows a una cuenta de PlayFab existente es muy similar. Las diferencias son:

1. En primer lugar, ya debe haber iniciado sesión en una cuenta de PlayFab. Normalmente, esto se hace de forma anónima, con un identificador de dispositivo no seguro.
2. A continuación, siga los pasos de la sección anterior, pero use `LinkWindowsHello`\<!-- [LinkWindowsHello](xref:titleid.playfabapi.com.client.accountmanagement.linkwindowshello) --> en lugar de `RegisterWithWindowsHello`.
3. Ahora el usuario podrá iniciar sesión con credenciales de Windows en el futuro y acceder a su cuenta de PlayFab o recuperarla.

## Iniciar la sesión del jugador mediante Windows Hello

Una vez que haya vinculado las credenciales de Windows Hello a una cuenta de PlayFab, puede iniciar sesión con esas credenciales. Necesitará la sugerencia de clave pública y el nombre de usuario de Windows.

Siga estos pasos:

1. Llame a `PlayFabClientAPI.GetWindowsHelloChallengeAsync`\<!-- [PlayFabClientAPI.GetWindowsHelloChallengeAsync](xref:titleid.playfabapi.com.client.authentication.getwindowshellochallenge) --> para crear un desafío de firma.
2. Llame a [CryptographicBuffer.DecodeFromBase64String](https://learn.microsoft.com/en-us/uwp/api/Windows.Security.Cryptography.CryptographicBuffer#Windows_Security_Cryptography_CryptographicBuffer_DecodeFromBase64String_System_String_) para crear un IBuffer para que `KeyCredentialManager` haga que el usuario lo firme.
3. Llame a `var retrieveResult = await` [KeyCredentialManager.OpenAsync(userId)](https://learn.microsoft.com/en-us/uwp/api/windows.security.credentials.keycredentialmanager#Windows_Security_Credentials_KeyCredentialManager_OpenAsync_System_String_) para crear un servicio de firma de claves.
4. Obtenga la credencial de este usuario: `var userCredential = retrieveResult.Credential`.
5. Llame a await [userCredential.RequestSignAsync(challengeBuffer)](https://learn.microsoft.com/en-us/uwp/api/Windows.Security.Credentials.KeyCredential#Windows_Security_Credentials_KeyCredential_RequestSignAsync_Windows_Storage_Streams_IBuffer_) para que Windows solicite al usuario que firme el desafío del servidor para este usuario.
6. Por último, llame a `PlayFabClientAPI.LoginWithWindowsHello`\<!-- [PlayFabClientAPI.LoginWithWindowsHello](xref:titleid.playfabapi.com.client.authentication.loginwithwindowshello) --> para completar el proceso e iniciar la sesión del jugador.
7. Si el inicio de sesión se realizó correctamente, el jugador habrá iniciado sesión. Recibirá un token de sesión que puede usar para autenticar al jugador con todas las demás API de PlayFab.

## Realizar una compra mediante la Tienda Windows

Realizar una compra mediante la Tienda Windows es similar al proceso de compra en iOS o Android. Hay dos fases:

1. Configurar la tienda en primer lugar.
2. Después, realizar la compra.

### Configurar la tienda

Microsoft ha publicado varios documentos que describen este proceso. Por ejemplo:

[Configurar la compra desde la aplicación en la Tienda Windows](https://learn.microsoft.com/en-us/windows/uwp/publish/add-on-submissions)

También debe asegurarse de configurar un artículo correspondiente en el catálogo de PlayFab, con el mismo identificador de producto.

### Realizar la compra

Una vez que haya configurado los artículos en la tienda, puede habilitar la compra desde la aplicación en su aplicación.

1. Realice la compra en la aplicación y asegúrese de solicitar un recibo.
   * En este documento se explica el proceso: [realizar compras desde la aplicación con UWP](https://learn.microsoft.com/en-us/uwp/api/windows.applicationmodel.store.currentapp#Windows_ApplicationModel_Store_CurrentApp_RequestProductPurchaseAsync_System_String_System_Boolean_).
2. Recibirá un recibo.
   * Puede encontrar [más información sobre los recibos aquí](https://learn.microsoft.com/en-us/windows/uwp/monetize/use-receipts-to-verify-product-purchases).
3. Llame a [PlayFabClientAPI.ValidateWindowsStoreReceipt](xref:titleid.playfabapi.com.client.platformspecificmethods.validatewindowsstorereceipt) para validar el recibo. Esto acreditará automáticamente en el inventario del jugador en PlayFab el artículo que acaba de comprar.

## Más preguntas

Si tiene más preguntas, publíquelas en nuestros [foros](https://community.playfab.com/index.html).

¡También nos encantaría recibir sus comentarios sobre la integración de su juego con la Plataforma universal de Windows!


## Related topics

- [Autenticación específica de la plataforma](/es/services/playfab/identity/player-identity/platform-specific-authentication/index.md)
- [Configuración de la autenticación de PlayFab con la Plataforma universal de Windows](/es/services/playfab/identity/player-identity/platform-specific-authentication/uwp.md)
- [Integración de PlayFab para títulos de los servicios de XBOX](/es/services/xbox-services/playfab-integration.md)
- [Depuración local de servidores de juego e integración con PlayFab](/es/services/playfab/multiplayer/servers/locally-debugging-game-servers-and-integration-with-playfab.md)
- [Notas de la versión de PlayFab OnlineSubsystem para Unreal Engine 4 y 5](/es/services/playfab/multiplayer/networking/unreal-release-notes.md)
