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

# Tutorial: obter um perfil de jogador

> Recupere os dados de perfil de jogadores do PlayFab no Unity usando GetPlayerProfile, configure PlayerProfileViewConstraints e leia os carimbos de data/hora de criação e do último login.

# Tutorial: obter um perfil de jogador

Neste tutorial, você aprenderá a:

<Note>
  \[!div class="checklist"] \* Criar um usuário com um nome de exibição \* Fazer uma chamada de perfil de jogador \* Obter a hora de criação do jogador e a hora do último login \* Configurar as restrições de exibição do perfil de jogador do título \* Obter o perfil de jogador por meio da operação de login
</Note>

## Requisitos

* Uma [conta de desenvolvedor do PlayFab](https://developer.playfab.com).
* Uma cópia instalada do Unity Editor. Para instalar o Unity para uso pessoal por meio do Unity Hub, ou o Unity+ para uso profissional, consulte [Baixar o Unity](https://unity3d.com/get-unity/download).

<Note>
  O PlayFab Unity3D SDK oferece suporte ao Unity Editor versão 5.3 (lançado em dezembro de 2015) e posteriores.
</Note>

* Um projeto do Unity \* pode ser qualquer um dos seguintes:
  * Um projeto totalmente novo. Para obter mais informações, consulte [Iniciando o Unity pela primeira vez](https://docs.unity3d.com/550/Documentation/Manual/GettingStarted.html).
  * Um projeto de tutorial guiado. Para obter mais informações, consulte [Introdução ao Unity](https://learn.unity.com/).
  * Um projeto existente.
* O [SDK do Unity3D](/pt-BR/services/playfab/sdks/unity3d) do PlayFab.

Para este tutorial, é necessário um conhecimento básico de como criar um jogador para o seu título, para que você possa executar um `GetPlayerProfile` no jogador.

Também vale a pena ler o [Início rápido do Game Manager](/pt-BR/services/playfab/live-service-management/gamemanager/quickstart) se você não estiver familiarizado com o Game Manager, pois é nele que configuramos as restrições de perfil.

Os exemplos em C# deste artigo foram escritos para o SDK do Unity. O SDK do Unity usa um modelo orientado a eventos para tratar tarefas não síncronas. Para executar o código de exemplo usando o SDK do C#, você precisa modificar o código para usar um modelo de Task assíncrono. Os métodos que precisam ser modificados têm Async acrescentado ao nome do método na assinatura. Por exemplo, SetObject no SDK do Unity se torna SetObjectAsync no SDK do C#. Para obter mais informações, consulte [Programação assíncrona com async e await](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/).

## Criar um usuário com um nome de exibição

A primeira etapa é criar um jogador e adicionar um nome de exibição ao usuário. Este exemplo criará um novo usuário com o nome de exibição `UnicornTossMaster`.

```csharp theme={null}
void CreatePlayerAndUpdateDisplayName() {
    PlayFabClientAPI.LoginWithCustomID( new LoginWithCustomIDRequest {
        CustomId = "PlayFabGetPlayerProfileCustomId",
        CreateAccount = true
    }, result => {
        Debug.Log("Successfully logged in a player with PlayFabId: " + result.PlayFabId);
        UpdateDisplayName();
    }, error => Debug.LogError(error.GenerateErrorReport()));
}

void UpdateDisplayName() {
    PlayFabClientAPI.UpdateUserTitleDisplayName( new UpdateUserTitleDisplayNameRequest {
        DisplayName = "UnicornTossMaster"
    }, result => {
        Debug.Log("The player's display name is now: " + result.DisplayName);
    }, error => Debug.LogError(error.GenerateErrorReport()));
}
```

A saída do console deve mostrar:

```
Successfully logged in a player with PlayFabId: SOME_PLAYFAB_ID
The player's display name is now: UnicornTossMaster
```

## Fazer uma chamada de perfil de jogador

A próxima etapa é criar um perfil bem básico para o jogador usando

O exemplo a seguir usa uma chamada básica a [GetPlayerProfile](xref:titleid.playfabapi.com.server.accountmanagement.getplayerprofile).

```csharp theme={null}
void GetPlayerProfile(string playFabId) {
    PlayFabClientAPI.GetPlayerProfile( new GetPlayerProfileRequest() {
        PlayFabId = playFabId,
        ProfileConstraints = new PlayerProfileViewConstraints() {
            ShowDisplayName = true
        }
    },
    result => Debug.Log("The player's DisplayName profile data is: " + result.PlayerProfile.DisplayName),
    error => Debug.LogError(error.GenerateErrorReport()));
}
```

A resposta inclui um objeto [PlayerProfileModel](xref:titleid.playfabapi.com.server.accountmanagement.getplayerprofile#playerprofilemodel) que contém o nome de exibição `UnicornTossMaster` do jogador.

## Obter a hora de criação do jogador e a hora do último login

No objeto [PlayerProfileModel](xref:titleid.playfabapi.com.server.accountmanagement.getplayerprofile#playerprofilemodel), há uma boa quantidade de dados sobre o jogador. Na etapa anterior, um `GetPlayerProfile` foi emitido, e a resposta recebida continha apenas as informações do nome de exibição.

A próxima etapa é obter ainda *mais* dados de perfil do jogador. Para isso, chame `GetPlayerProfile` com campos adicionais no parâmetro de solicitação [PlayerProfileViewConstraints](xref:titleid.playfabapi.com.server.accountmanagement.getplayerprofile#playerprofileviewconstraints).

O exemplo em **C#** a seguir modifica o método `GetPlayerProfile` da etapa 2 e chama `GetPlayerProfile` para solicitar os campos `Created` e `LastLogin`, definindo seus sinalizadores em [ProfileConstraints](xref:titleid.playfabapi.com.server.accountmanagement.getplayerprofile#playerprofileviewconstraints).

<Note>
  **Esta chamada não terá êxito nesta etapa!!!**
</Note>

```csharp theme={null}
void CreatePlayerAndUpdateDisplayName(string playFabId) {
    PlayFabClientAPI.GetPlayerProfile( new GetPlayerProfileRequest() {
        PlayFabId = playFabId,
        ProfileConstraints = new PlayerProfileViewConstraints {
            ShowDisplayName = true,
            ShowCreated = true,
            ShowLastLogin = true
        }
    },
    result => Debug.Log("The player's profile Created date is: " + result.PlayerProfile.Created),
    error => Debug.LogError(error.GenerateErrorReport()));
}
```

Se você executar este código de exemplo neste ponto, ele retornará um erro com `Error Code 1303`. `RequestViewConstraintParamsNotAllowed` e uma mensagem de erro informando que há `Invalid view constraints`, com uma saída JSON das restrições definidas atualmente no título.

O erro ocorre porque você ainda não configurou a capacidade de mostrar `Created` e `LastLogin` nas configurações de restrição de perfil do seu título.

## Configurar as restrições de exibição do perfil de jogador do título

Para obter mais dados ao chamar a API [GetPlayerProfile](xref:titleid.playfabapi.com.server.accountmanagement.getplayerprofile), você precisa configurar as restrições para que os dados fiquem disponíveis. Essas configurações ficam nas configurações do título no Game Manager.

Por padrão, **ALLOW CLIENT ACCESS TO PROFILE PROPERTIES:** tinha somente **Display name** habilitado, o que permitia recuperar o valor de **Display Name**.

Para configurar restrições adicionais para o título:

* No [Game Manager](https://developer.playfab.com), selecione seu título.
* Selecione o ícone de engrenagem no canto superior esquerdo e, em seguida, selecione **Title settings**.
* Selecione a guia **Client Profile Options**.
* Para habilitar **Created** e **LastLogin** em [ProfileConstraints](xref:titleid.playfabapi.com.server.accountmanagement.getplayerprofile#playerprofileviewconstraints), marque **Creation date** e **Last login time** e selecione **SAVE CLIENT PROFILE OPTIONS**.

<img src="https://mintcdn.com/microsoft-4404708b/N3T1ucKV7zIMBudj/images/playfab/player-progression/player-data/tutorials/playfab-allow-client-access-to-profile-properties.png?fit=max&auto=format&n=N3T1ucKV7zIMBudj&q=85&s=e3bbe44c17680cdd24273e71fb2f7d80" alt="Configurações do PlayFab * Client Profile Options * Allow client access to profile properties" width="1227" height="937" data-path="images/playfab/player-progression/player-data/tutorials/playfab-allow-client-access-to-profile-properties.png" />

Agora, ao chamar 1`CreatePlayerAndUpdateDisplayName`, ele retorna o objeto [PlayerProfileModel](xref:titleid.playfabapi.com.server.accountmanagement.getplayerprofile#playerprofilemodel) com os dados de hora de criação do usuário, do último login e o nome de exibição `UnicornTossMaster`.

## Obter o perfil de jogador por meio da operação de login

Na maioria dos casos, você vai querer recuperar os dados de perfil do jogador assim que ele fizer login. A API do PlayFab permite combinar a chamada de login e a chamada para recuperar o perfil do jogador em uma única chamada.

O exemplo a seguir mostra como obter informações de perfil por meio de uma solicitação de login e usa `LoginWithCustomId` como exemplo.

<Note>
  Isso funciona com *todos* os mecanismos de login.
</Note>

```csharp theme={null}
void CreatePlayerAndUpdateDisplayName(string customId) {
    PlayFabClientAPI.LoginWithCustomID( new LoginWithCustomIDRequest() {
        CustomId = customId,
        // Define info request parameters
        InfoRequestParameters = new GetPlayerCombinedInfoRequestParams() {
            // And make sure PlayerProfile is included
            GetPlayerProfile = true,
            // Define rules for PlayerProfile request
            ProfileConstraints = new PlayerProfileViewConstraints() {
                // And make sure that both AvatarUrl and LastLogin are included.
                ShowAvatarUrl = true,
                ShowLastLogin = true,
            }
        }
    },
    result =>
    {
        // Extract the data you have requested
        var avatarUrl = result.InfoResultPayload.PlayerProfile.AvatarUrl;
    },
    error => Debug.LogError(error.GenerateErrorReport()));
}
```


## Related topics

- [Obter o valor até a data (VTD) de um jogador no Economy (Legacy)](/pt-BR/services/playfab/economy-monetization/economy/tutorials/getting-a-players-vtd.md)
- [Tutorial para exportar jogadores de um segmento](/pt-BR/services/playfab/live-service-management/game-configuration/segmentation/segmentation-export-players-in-a-segment.md)
- [Tutorial para contar os jogadores de um segmento](/pt-BR/services/playfab/live-service-management/game-configuration/segmentation/segmentation-player-count.md)
- [Definir idiomas padrão](/pt-BR/services/playfab/live-service-management/game-configuration/title-communications/news/setting-default-languages.md)
- [Usar modelos de email para enviar um email de recuperação de conta](/pt-BR/services/playfab/live-service-management/game-configuration/title-communications/emails/using-email-templates-to-send-an-account-recovery-email.md)
