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

# Integrar a Plataforma Universal do Windows ao PlayFab

> Integre um aplicativo da Plataforma Universal do Windows ao PlayFab vinculando uma conta do Windows Hello, conectando jogadores e validando compras da Windows Store.

Este tutorial apresenta três pontos-chave de integração entre o PlayFab e a Plataforma Universal do Windows (UWP).

<Note>
  Criamos um [repositório do GitHub](https://github.com/PlayFab/UWPExample) com código de exemplo para ilustrar como integrar a Plataforma Universal do Windows ao PlayFab.
</Note>

Integrar a Plataforma Universal do Windows (UWP) ao PlayFab é muito simples. Na verdade, há apenas três coisas com as quais você precisa se preocupar:

1. Vincular uma conta do Windows Hello à sua conta do PlayFab.
2. Fazer login do jogador por meio do Windows Hello.
3. Validar uma compra feita na Windows Store.

Vamos abordar esses três tópicos em ordem.

## Vincular uma conta do Windows Hello à sua conta do PlayFab

Há duas formas de vincular uma conta do Windows Hello à sua conta do PlayFab:

1. Você pode criar uma nova conta do PlayFab usando suas credenciais do Windows Hello.
2. Você pode vincular credenciais do Windows Hello à sua conta existente do PlayFab.

A escolha depende de o Windows Hello ser ou não sua autenticação principal.

### Criar uma nova conta com credenciais do Windows

Antes de iniciar esse processo, você precisa pedir ao usuário o nome de usuário dele no Windows.

Em seguida, siga estas etapas:

1. Chame [KeyCredentialManager.RequestCreateAsync](https://learn.microsoft.com/en-us/uwp/api/windows.security.credentials.keycredentialmanager) para gerar uma nova chave pública para esse usuário.
2. Chame [CryptographicBuffer.EncodeToBase64String](https://learn.microsoft.com/en-us/uwp/api/Windows.Security.Cryptography.CryptographicBuffer#Windows_Security_Cryptography_CryptographicBuffer_EncodeToBase64String_Windows_Storage_Streams_IBuffer_) para converter o IBuffer acima em uma cadeia de caracteres.
3. Chame `PlayFabClientAPI.RegisterWithWindowsHello`\<!-- [PlayFabClientAPI.RegisterWithWindowsHello](xref:titleid.playfabapi.com.client.authentication.registerwithwindowshello) --> com os seguintes parâmetros obrigatórios:
   * O nome de usuário do Windows.
   * A chave pública codificada em Base 64 obtida acima.
4. Supondo que o registro tenha êxito, o jogador estará conectado. Você receberá um token de sessão que pode usar para autenticar o jogador em todas as outras APIs do PlayFab.
5. Além disso, agora você pode 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 criar um provedor de hash e gerar o hash da chave pública chamando [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. Converta o hash da chave pública em uma cadeia de caracteres codificada em 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_) e armazene essa cadeia de caracteres e o nome de usuário nas configurações do aplicativo. (ApplicationData.Current.LocalSettings.Values\["publicKeyHint"]). Essa dica de chave pública é usada para fazer login novamente.
7. O nome de usuário também deve ser armazenado nas configurações locais do usuário, para simplificar o login.

### Vincular credenciais do Windows a uma conta existente do PlayFab

O processo para vincular credenciais do Windows a uma conta existente do PlayFab é muito semelhante. As diferenças são:

1. Primeiro, você já deve estar conectado a uma conta do PlayFab. Normalmente, isso é feito anonimamente, usando uma ID de dispositivo não segura.
2. Em seguida, siga as etapas da seção anterior, mas use `LinkWindowsHello`\<!-- [LinkWindowsHello](xref:titleid.playfabapi.com.client.accountmanagement.linkwindowshello) --> em vez de `RegisterWithWindowsHello`.
3. Agora o usuário poderá fazer login com credenciais do Windows no futuro e acessar ou recuperar a conta do PlayFab.

## Fazer login do jogador por meio do Windows Hello

Depois de vincular as credenciais do Windows Hello a uma conta do PlayFab, você poderá fazer login com essas credenciais. Você precisará da dica de chave pública e do nome de usuário do Windows.

Siga estas etapas:

1. Chame `PlayFabClientAPI.GetWindowsHelloChallengeAsync`\<!-- [PlayFabClientAPI.GetWindowsHelloChallengeAsync](xref:titleid.playfabapi.com.client.authentication.getwindowshellochallenge) --> para criar um desafio de assinatura.
2. Chame [CryptographicBuffer.DecodeFromBase64String](https://learn.microsoft.com/en-us/uwp/api/Windows.Security.Cryptography.CryptographicBuffer#Windows_Security_Cryptography_CryptographicBuffer_DecodeFromBase64String_System_String_) para criar um IBuffer para que o `KeyCredentialManager` peça ao usuário que o assine.
3. Chame `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 criar um serviço de assinatura de chave.
4. Obtenha a credencial desse usuário: `var userCredential = retrieveResult.Credential`.
5. Chame 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 o Windows solicite ao usuário que assine o desafio do servidor para esse usuário.
6. Por fim, chame `PlayFabClientAPI.LoginWithWindowsHello`\<!-- [PlayFabClientAPI.LoginWithWindowsHello](xref:titleid.playfabapi.com.client.authentication.loginwithwindowshello) --> para concluir o processo e fazer login do jogador.
7. Supondo que o login tenha êxito, o jogador estará conectado. Você receberá um token de sessão que pode usar para autenticar o jogador em todas as outras APIs do PlayFab.

## Fazer uma compra pela Windows Store

Fazer uma compra pela Windows Store é semelhante ao processo de compra no iOS ou Android. Há duas etapas:

1. Configurar a loja.
2. Em seguida, fazer a compra.

### Configurar a loja

A Microsoft publicou vários documentos que descrevem esse processo. Por exemplo:

[Configurar a compra no aplicativo na Windows Store](https://learn.microsoft.com/en-us/windows/uwp/publish/add-on-submissions)

Você também deve configurar um item correspondente no catálogo do PlayFab, com a mesma ID de produto.

### Fazer a compra

Depois de configurar os itens na loja, você poderá habilitar a compra no aplicativo.

1. Faça a compra no aplicativo e solicite um recibo.
   * Este documento explica o processo: [fazer compras no aplicativo com a UWP](https://learn.microsoft.com/en-us/uwp/api/windows.applicationmodel.store.currentapp#Windows_ApplicationModel_Store_CurrentApp_RequestProductPurchaseAsync_System_String_System_Boolean_).
2. Você receberá um recibo.
   * Você pode encontrar [mais informações sobre recibos aqui](https://learn.microsoft.com/en-us/windows/uwp/monetize/use-receipts-to-verify-product-purchases).
3. Chame [PlayFabClientAPI.ValidateWindowsStoreReceipt](xref:titleid.playfabapi.com.client.platformspecificmethods.validatewindowsstorereceipt) para validar o recibo. Isso creditará automaticamente no inventário do jogador no PlayFab o item que ele acabou de comprar.

## Outras perguntas

Se você tiver outras perguntas, publique-as em nossos [fóruns](https://community.playfab.com/index.html).

Também adoraríamos receber seus comentários sobre a integração do seu jogo com a Plataforma Universal do Windows!


## Related topics

- [Autenticação específica da plataforma](/pt-BR/services/playfab/identity/player-identity/platform-specific-authentication/index.md)
- [Integrar servidores de jogo ao PlayFab GSDK](/pt-BR/services/playfab/multiplayer/servers/integrating-game-servers-with-gsdk.md)
- [Integrar o plug-in do PlayFab do Unreal Engine Marketplace](/pt-BR/services/playfab/multiplayer/networking/party-unreal-engine-oss-playfab-plugin-integration.md)
- [Integrar experimentos a outros serviços do PlayFab](/pt-BR/services/playfab/live-service-management/game-configuration/experiments/experiments-other-services.md)
- [Introdução ao Multiplayer para Android](/pt-BR/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/android-specific-requirements.md)
