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

# Como definir dados somente leitura do jogador

> Grave dados somente leitura de jogadores do PlayFab a partir das APIs de servidor para que os clientes possam ler valores de progressão autoritativos sem conseguir modificá-los.

Para definir KVPs somente leitura, você deve chamar o método [UpdateUserReadOnlyData](xref:titleid.playfabapi.com.server.playerdatamanagement.updateuserreadonlydata) da API de servidor a partir de um processo de servidor. Esses são dados que o servidor pode modificar, mas o cliente só pode ler.

Os exemplos em C# deste tópico 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/).

## Exemplo de código em C\#

O exemplo de código em **C#** a seguir usa a API de servidor do PlayFab para criar (ou atualizar, se os KVPs já existirem) os KVPs com a chave chamada `Father`, com o valor `Fred`, `Mother`, com o valor `Alice`, `Sister`, com o valor `Lucy`, e `Brother`, com o valor `Doug`.

```csharp theme={null}
public void UpdateUserReadOnlyData() {
    PlayFabServerAPI.UpdateUserReadOnlyData(new UpdateUserDataRequest() {
        PlayFabId = "user PlayFabId here - obtained from any successful LoginResult",
        Data = new Dictionary<string, string>() {
            {"Father", "Fred"},
            {"Mother", "Alice"},
            {"Sister", "Lucy"},
            {"Brother", "Doug"}
        },
        Permission = UserDataPermission.Public
    },
    result => Debug.Log("Set read-only user data successful"),
    error => {
        Debug.Log("Got error updating read-only user data:");
        Debug.Log(error.GenerateErrorReport());
    });
}
```

## Confira também

[Como obter dados somente leitura do jogador](/pt-BR/services/playfab/player-progression/player-data/how-to-get-read-only-player-data)


## Related topics

- [Como obter dados somente leitura do jogador](/pt-BR/services/playfab/player-progression/player-data/how-to-get-read-only-player-data.md)
- [Início rápido de dados do jogador](/pt-BR/services/playfab/player-progression/player-data/quickstart.md)
- [Modificar dados somente leitura ou internos do jogador por meio do CloudScript](/pt-BR/services/playfab/player-progression/player-data/how-to-modify-read-only-internal-player-data.md)
- [Como definir dados internos do jogador](/pt-BR/services/playfab/player-progression/player-data/how-to-set-internal-player-data.md)
- [Obter dados somente leitura do usuário](/pt-BR/services/playfab/api-references/rest/server/player-data-management/get-user-read-only-data.md)
