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

# Início rápido da vinculação de contas

> Vincule uma conta de jogador do PlayFab a vários dispositivos e métodos de login, adicionando entradas recuperáveis, como nome de usuário, Facebook ou Google, a contas anônimas.

Este início rápido de vinculação de contas demonstra como associar uma conta a vários dispositivos e mecanismos de login.

Uma única conta do PlayFab pode ser acessada por muitos dispositivos e credenciais de login. Conforme discutimos em nosso tutorial [Noções básicas e práticas recomendadas de login](/pt-BR/services/playfab/identity/player-identity/login/login-basics-best-practices), há duas formas de autenticação de usuário:

1. **Anônima**
2. **Recuperável**

## Adicionando um login recuperável a uma conta anônima existente

É muito comum que o primeiro login seja anônimo. Isso leva o jogador para dentro do jogo, sem atrito.

Mas, depois que um jogador se envolve com o seu jogo, você deve solicitar que ele adicione um método de login recuperável, o que torna a conta dele *recuperável* em caso de falha do dispositivo ou outros problemas.

Esta seção aborda a adição de um mecanismo de login recuperável a uma conta anônima.

<Note>
  Um login anônimo continua sendo relevante e pode continuar sendo o login principal sem atrito para o jogador. Muitos jogadores *só* usarão essas opções novamente se estiverem tentando recuperar a conta, usando recursos específicos da plataforma ou vinculando um segundo dispositivo anônimo.
</Note>

<img src="https://mintcdn.com/microsoft-4404708b/3hg2JQs0m7qmDqay/images/playfab/identity/player-identity/tutorials/playfab-anonymous-login-and-recoverable-login.png?fit=max&auto=format&n=3hg2JQs0m7qmDqay&q=85&s=33569b13f8e303cf4cf96fa2673a975a" alt="Login anônimo e mecanismo de login recuperável do PlayFab" width="866" height="802" data-path="images/playfab/identity/player-identity/tutorials/playfab-anonymous-login-and-recoverable-login.png" />

O foco deste tutorial está na parte inferior da imagem anterior, com as células: **AddUsernamePassword**, **LinkWithFacebook** ou **LinkWithGoogle**. Elas indicam algumas das várias opções disponíveis para mecanismos de login recuperáveis.

* [AddUsernamePassword](xref:titleid.playfabapi.com.client.accountmanagement.addusernamepassword) é usado para habilitar um ou ambos: [LoginWithPlayFab](xref:titleid.playfabapi.com.client.authentication.loginwithplayfab) e [LoginWithEmailAddress](xref:titleid.playfabapi.com.client.authentication.loginwithemailaddress). Essas opções armazenam as credenciais de nome de usuário/email/senha diretamente no PlayFab. Para que um jogador recupere a conta, seu jogo, site ou atendimento ao cliente pode acionar:
  * [SendAccountRecoveryEmail](xref:titleid.playfabapi.com.admin.accountmanagement.sendaccountrecoveryemail) para esse endereço de email. Se um jogador inserir um endereço de email falso, você *ainda* poderá usar o PlayFab Game Manager para atualizar o endereço de email do jogador, embora seja importante garantir que seus representantes de atendimento ao cliente sejam treinados para ficar atentos a truques comuns de engenharia social, para que atualizem apenas o endereço de email do verdadeiro proprietário da conta.

Cada um dos mecanismos de login recuperáveis de terceiros envolve solicitar que o usuário faça login por meio de um SDK ou chamada de API de terceiros apropriado. A vinculação dessa conta ao PlayFab geralmente segue o mesmo padrão:

1. Primeiro, solicite que o usuário faça login nesse serviço (mais detalhes em [Noções básicas e práticas recomendadas de login](/pt-BR/services/playfab/identity/player-identity/login/login-basics-best-practices)).
2. Depois que você fizer login, esses serviços fornecerão algum tipo de token, que pode ser passado ao PlayFab.
3. Isso permite que o PlayFab se vincule com segurança a essa conta sem conhecer as credenciais do usuário nesse serviço.

<Note>
  Alguns serviços exigem que o PlayFab tenha algumas informações adicionais, como uma ID de aplicativo, para fazer a chamada de autenticação a esse serviço para o seu jogo. Verifique a página **Add-on Marketplace** do serviço em questão como parte da configuração do seu título.
</Note>

### Prática recomendada

Use um login anônimo para criar novos jogadores sem nenhum atrito. Após uma fase de tutorial, incentive gentilmente os jogadores a vincular a opção de credenciais recuperáveis de sua preferência à conta deles.

Se você estiver usando um sistema de autenticação de terceiros, recupere o token apropriado desse serviço (por meio de chamadas de API ou funções do SDK) e, em seguida, chame a API do PlayFab apropriada para vincular a conta do jogador nesse serviço à conta do PlayFab dele: [LinkFacebookAccount](xref:titleid.playfabapi.com.client.accountmanagement.linkfacebookaccount), [LinkGameCenterAccount](xref:titleid.playfabapi.com.client.accountmanagement.linkgamecenteraccount), [LinkGoogleAccount](xref:titleid.playfabapi.com.client.accountmanagement.linkgoogleaccount), [LinkKongregate](xref:titleid.playfabapi.com.client.accountmanagement.linkkongregate), [LinkSteamAccount](xref:titleid.playfabapi.com.client.accountmanagement.linksteamaccount), [LinkTwitch](xref:titleid.playfabapi.com.client.accountmanagement.linktwitch), `LinkWindowsHello`\<!-- [LinkWindowsHello](xref:titleid.playfabapi.com.client.accountmanagement.linkwindowshello) -->.

### Prática recomendada

* Para a privacidade do usuário, *não* salve nem armazene nenhuma credencial de usuário (essa também é uma das muitas etapas necessárias para a conformidade com a COPPA e, se esse for um requisito para o seu título, converse com seu consultor jurídico para confirmar sua conformidade).

* Se você estiver usando as credenciais do PlayFab ou chamando uma API de terceiros diretamente, deverá limpar as informações de login da memória o mais rápido possível. Geralmente, os SDKs de terceiros cuidam disso para você.

* Não mantenha nenhuma informação identificável ou segura na memória por mais tempo do que o necessário e não a salve em um arquivo ou local remoto. As APIs do PlayFab são projetadas para utilizar apenas o mínimo de informações necessárias.

## Adicionar novos dispositivos a uma conta recuperável existente

O PlayFab permite que vários logins e dispositivos acessem a mesma conta. Quando configurado corretamente, um jogador pode jogar em qualquer dispositivo, deixar esse dispositivo de lado, pegar um novo dispositivo (até mesmo de tipo, marca, plataforma ou sistema operacional diferente) e continuar jogando o mesmo jogo, com todos os seus dados intactos.

### Requisito

O jogador deve possuir dois dispositivos:

* **Device1** - Configurado com uma conta e credenciais recuperáveis já configuradas corretamente. Também é ideal que o segundo dispositivo *não* esteja associado a uma conta. Esse processo tornará órfã qualquer conta que tenha apenas a ID do segundo dispositivo como mecanismo de login, tornando-a irrecuperável. No entanto, o PlayFab tem opções para detectar e alertar com segurança contra esse caso.
* Toda a atividade neste cenário ocorre no **Device2** - Para começar, o fluxo de login do usuário para o segundo dispositivo deve ser *invertido*. Você deve oferecer ao usuário a opção de fazer login por meio de um mecanismo recuperável, e *não* fazer login automaticamente com a ID do dispositivo.

Não realizar esta etapa resultará em uma experiência estranha para o jogador, em que ele será alertado sobre a perda de uma conta que nunca teve a intenção de criar.

Portanto, o fluxo para as várias condições é o seguinte; observe que, em todos os casos, há apenas *uma* conta de jogador, que tem uma conta recuperável vinculada.

**Estado do Device1**: a **ID do dispositivo** está associada à conta do jogador.
**Estado do Device2**: a **ID do dispositivo** *não* está associada à conta do jogador.

* Depois de entrar na conta do jogador no **Device2** (usando as credenciais da conta recuperável), faça uma chamada para [GetPlayerCombinedInfo](xref:titleid.playfabapi.com.client.accountmanagement.getplayercombinedinfo).
  * Para cada tipo de dispositivo retornado nessas informações, a ID do dispositivo conectado mais recentemente é retornada em [result.InfoResultPayload.AccountInfo](xref:titleid.playfabapi.com.client.accountmanagement.getplayercombinedinfo#getplayercombinedinforesultpayload).

Como o **Device2** ainda não foi vinculado a essa conta de jogador, a ID de dispositivo relevante (**AccountInfo.IosDeviceInfo**, **AccountInfo.AndroidDeviceInfo** etc.) não corresponderá à **ID do Device2**.

**Estado do Device1**: a **ID do dispositivo** está associada à conta do jogador.
**Estado do Device2**: conectado com credenciais recuperáveis, mas a **ID do dispositivo** *não* está associada à conta do jogador.

Agora que verificamos que o **Device2** não está associado a essa conta, podemos tentar associá-lo.

* Chame a chamada de API **LinkAndroidDeviceID**, **LinkIOSDeviceID** ou outra específica do dispositivo apropriada.
* Se for bem-sucedida, você terá concluído; retome a jogabilidade normal.
* Mas, como em qualquer chamada de API, *esteja preparado para capturar erros*. Especificamente, procure um erro retornado indicando que o dispositivo já está vinculado a uma conta.
* Nessa condição, exiba ao jogador uma mensagem **Deseja associar este dispositivo a esta conta**.
* Certifique-se de informar que a outra conta poderá ser *perdida* se ele continuar.
* Se o jogador aceitar esse aviso, reenvie a solicitação de vinculação com a propriedade **ForceLink** definida como **True**.
* Isso desvinculará a **ID do Device2** da conta antiga, possivelmente tornando essa conta órfã se nenhum outro mecanismo de login estiver vinculado a ela, e a associará à nova conta.

### Prática recomendada

Use o CloudScript ou um evento do PlayStream para registrar informações sobre contas abandonadas em algum lugar onde seus representantes de atendimento ao cliente possam recuperá-las, caso o jogador tenha cometido um erro.

<Note>
  Até mesmo algo tão simples quanto gravar o PlayFabId em um arquivo de log baseado em nuvem pode salvar a conta de um jogador dedicado.
</Note>

**Estado do Device1**: a **ID do dispositivo** está associada à conta do jogador.
**Estado do Device2**: a **ID do dispositivo** está associada à conta do jogador.

Neste ponto, ambos os dispositivos jogam na mesma conta, e ambos podem usar o login sem atrito com segurança.

## Associar uma ID de dispositivo sem atrito a uma conta recuperável existente

Este cenário é muito semelhante à situação acima, exceto que a conta foi criada usando credenciais recuperáveis.

Você pode converter uma tela de login de jogo existente em um login sem atrito associando um login anônimo posteriormente. As etapas aqui são quase idênticas às da condição acima, apenas com um *único* dispositivo (que é simplesmente o **Device2** no fluxo acima).

**Estado do dispositivo**: a **ID do dispositivo** *não* está associada à conta do jogador.

Depois de realizar um login recuperável com o dispositivo, chame [GetPlayerCombinedInfo](xref:titleid.playfabapi.com.client.accountmanagement.getplayercombinedinfo). Novamente, determine se a ID do dispositivo corresponde à ID do dispositivo associada, por meio das informações retornadas em [result.InfoResultPayload.AccountInfo](xref:titleid.playfabapi.com.client.accountmanagement.getplayercombinedinfo#getplayercombinedinforesultpayload).

Como o dispositivo nunca entrou na conta, a ID de dispositivo relevante (**AccountInfo.IosDeviceInfo**, **AccountInfo.AndroidDeviceInfo** etc.) não corresponderá à ID do dispositivo.

**Estado do dispositivo**: conectado com credenciais recuperáveis, mas a ID do dispositivo não está associada à conta do jogador.

Como o dispositivo não está associado a essa conta, podemos tentar associá-lo. Chame a chamada de API **LinkAndroidDeviceID**, **LinkIOSDeviceID** ou outra específica do dispositivo apropriada.

Se for bem-sucedida, você terá concluído; retome a jogabilidade normal.

Mas, novamente, esteja preparado para capturar erros. Especificamente, procure um erro retornado indicando que o dispositivo já está vinculado a uma conta. Nessa condição, exiba ao jogador uma mensagem **Deseja associar este dispositivo a esta conta**.

Certifique-se de informar que a outra conta poderá ser perdida se ele continuar. Se o jogador aceitar esse aviso, reenvie a solicitação de vinculação com a propriedade **ForceLink** definida como **True**.

Isso desvinculará a ID do dispositivo da conta antiga, possivelmente tornando essa conta órfã se nenhum outro mecanismo de login estiver vinculado a ela, e a associará à nova conta.

**Prática recomendada**:

Use o CloudScript ou um evento do PlayStream para registrar informações sobre contas abandonadas em algum lugar onde seus representantes de atendimento ao cliente possam recuperá-las, caso o jogador tenha cometido um erro. Até mesmo algo tão simples quanto gravar o PlayFabId em um arquivo de log baseado em nuvem pode salvar a conta de um jogador dedicado.

**Estado do dispositivo**: a ID do dispositivo está associada à conta do jogador.

Neste ponto, um login sem atrito pode ser usado com o dispositivo, em vez das credenciais recuperáveis.

## Outras práticas recomendadas

As etapas acima envolvem solicitar algo ao usuário antes do login. O login sem atrito envolve fazer login *sem* perguntar primeiro ao jogador. Você pode encontrar um meio-termo ideal com as seguintes sugestões:

APIs de login sem atrito: todos os seus logins sem atrito têm um parâmetro de solicitação chamado **CreateAccount**.

Exemplos:

* [**AndroidRequest**](xref:titleid.playfabapi.com.client.authentication.loginwithandroiddeviceid)**.CreateAccount**
* [**IosRequest**](xref:titleid.playfabapi.com.client.authentication.loginwithiosdeviceid)**.CreateAccount**. Selecione **true** ou **false** para esta propriedade de acordo com as seguintes diretrizes:

**Na inicialização**:

* Na sua cena de login, seu jogo pode tentar imediatamente um login sem atrito com **CreateAccount=false**. Se isso for bem-sucedido, esse jogador já fez login no jogo com esse dispositivo e pode pular com segurança diretamente para a cena do jogo. Capture o retorno de chamada de erro dessa chamada e faça com que ele exiba as opções de login pela primeira vez.

* **Cena de login pela primeira vez**: para qualquer dispositivo com capacidade de login sem atrito, essa cena deve incluir um botão **Jogar agora**, além de botões que permitam ao jogador fazer login em uma conta existente via Facebook, Twitch, Google ou outras opções de login recuperáveis. O botão **Jogar agora** deve ativar o login sem atrito com **CreateAccount=true**.

* **Sair**: forneça um botão **Sair** que retorne à sua cena de login pela primeira vez, mas que *não* ative automaticamente o login sem atrito. Isso dá ao usuário a opção de abandonar a conta associada ao dispositivo fazendo login com uma opção **recuperável** e, em seguida, associando o dispositivo a essa conta.

Com essas sugestões, você pode evitar a *maioria* dos cenários estranhos, em que os usuários são solicitados a abandonar uma conta ao associar vários dispositivos à mesma conta.


## Related topics

- [Início rápido do Unity](/pt-BR/services/playfab/sdks/unity3d/quickstart.md)
- [XR-013 Vinculação de contas Microsoft a contas do publisher](/pt-BR/publishing/certification/xr/xr-013.md)
- [Início rápido de matchmaking](/pt-BR/services/playfab/multiplayer/matchmaking/quickstart.md)
- [Início rápido da Previsão de Rotatividade](/pt-BR/services/playfab/data-analytics/learn-data/churn-prediction/churn-prediction-quickstart.md)
- [Início rápido da Amostragem de Eventos](/pt-BR/services/playfab/data-analytics/export-data/event-sampling-quickstart.md)
