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

# Uso de los datos del publicador

> Comparta datos de configuración y datos clave-valor de jugador entre varios títulos de un estudio de PlayFab mediante SetPublisherData, GetPublisherData y las API relacionadas.

En este tutorial se describe cómo crear y usar los datos del publicador (estudio).

Los datos del publicador son datos que abarcan *más de un título*, como cuando tiene varios juegos que necesitan compartir información común.

<Note>
  Esta categoría también incluye datos de jugadores que abarcan varios juegos. PlayFab almacena los datos como pares clave-valor (KVP).
</Note>

La mayoría de estas API son API de servidor a las que su programa debe llamar desde un servidor dedicado o a través de una función de CloudScript dentro del servicio PlayFab.

* Use las API de servidor **[SetPublisherData](xref:titleid.playfabapi.com.server.title-widedatamanagement.setpublisherdata)** para actualizar y **[GetPublisherData](xref:titleid.playfabapi.com.server.title-widedatamanagement.getpublisherdata)** para recuperar los pares clave-valor personalizados específicos del publicador.
* Use **[UpdateUserPublisherData](xref:titleid.playfabapi.com.client.playerdatamanagement.updateuserpublisherdata)** para crear o actualizar y **[GetUserPublisherData](xref:titleid.playfabapi.com.client.playerdatamanagement.getuserpublisherdata)** para recuperar los pares clave-valor personalizados específicos del publicador para el jugador.
* Use la API de servidor **[UpdateUserPublisherReadOnlyData](xref:titleid.playfabapi.com.server.playerdatamanagement.updateuserpublisherreadonlydata)** para actualizar y la API de cliente **[GetUserPublisherReadOnlyData](xref:titleid.playfabapi.com.client.playerdatamanagement.getuserpublisherreadonlydata)** para recuperar los pares clave-valor personalizados de solo lectura específicos del publicador para el usuario.
* Use las API de servidor **[UpdateUserPublisherInternalData](xref:titleid.playfabapi.com.server.playerdatamanagement.updateuserpublisherinternaldata)** para actualizar y **[GetUserPublisherInternalData](xref:titleid.playfabapi.com.server.playerdatamanagement.getuserpublisherinternaldata)** para recuperar los pares clave-valor personalizados internos específicos del publicador para el usuario.

Debe llamar a las API de servidor desde un servidor dedicado o a través de una función de CloudScript mediante el servicio PlayFab. Esto es así por diseño, ya que las API de servidor de PlayFab requieren que proporcione su clave secreta.

<Tip>
  *No recomendamos* usar API de servidor desde dentro de un cliente de juego. Si necesita utilizar una API de servidor, use CloudScript para este tipo de funcionalidad.
</Tip>

Los valores de los datos del publicador se copian y distribuyen a potencialmente *cientos* de máquinas del clúster de servidores de PlayFab. Como parte de este proceso, estos datos se almacenan en caché y los cambios pueden tardar hasta *quince minutos* en actualizarse en esas cachés.

<Note>
  Los datos del publicador son más adecuados para *datos globales constantes o estáticos* y *no* resultan adecuados ni fiables como *variables globales*.
</Note>

## Datos del publicador

Los datos del publicador se usan para almacenar datos estáticos para un conjunto de títulos. Cada entrada *no está enlazada* a ninguna entidad de PlayFab, como un jugador (a diferencia de los [datos del publicador de usuario](#user-publisher-data)).

### Establecimiento de los datos del publicador

El siguiente fragmento de código muestra cómo establecer los datos del publicador mediante la API de servidor.

<Note>
  Existe una API de administración equivalente para esta operación.
</Note>

```csharp theme={null}
public void ServerSetPublisherData() {
    PlayFabServerAPI.SetPublisherData(new SetPublisherDataRequest() {
            Key = "SomeKey",
            Value = "SomeValue"
        },
        result => Debug.Log("Complete setting publisher data"),
        error => {
            Debug.Log("Got error setting publisher data");
            Debug.Log(error.GenerateErrorReport());
        }
    );
}
```

### Obtención de los datos del publicador

El siguiente fragmento de código muestra cómo obtener los datos del publicador mediante la API de cliente.

<Note>
  Existen API de servidor y de administración equivalentes para esta operación.
</Note>

```csharp theme={null}
public void ClientGetPublisherData() {
    PlayFabClientAPI.GetPublisherData(new GetPublisherDataRequest(),
    result => {
        if (result.Data == null || !result.Data.ContainsKey("SomeKey")) Debug.Log("No SomeKey");
        else Debug.Log("SomeKey: " + result.Data["SomeKey"]);
    },
    error => {
        Debug.Log("Got error getting publisher data");
        Debug.Log(error.GenerateErrorReport());
    });
}
```

## Datos del publicador de usuario

Los datos del publicador de usuario pueden usarse para introducir datos del publicador que están enlazados a un usuario (jugador) de PlayFab.

A diferencia de los datos del publicador normales, es posible que una aplicación cliente modifique los datos del publicador de usuario.

PlayFab expone 3 niveles de protección para los datos del publicador de usuario desde el punto de vista de la API de cliente:

1. Los datos del publicador de usuario normales exponen acceso de lectura y escritura para las aplicaciones cliente.

   * Se establecen mediante las API de cliente, de servidor y de administración.
   * Se obtienen mediante las API de cliente, de servidor y de administración.
   * La API de cliente solo puede establecer datos del publicador para un jugador que haya iniciado sesión en ese momento.

2. Los datos del publicador de usuario de solo lectura exponen acceso de lectura para las aplicaciones cliente.

   * Se establecen mediante las API de servidor y de administración.
   * Se obtienen mediante las API de cliente, de servidor y de administración.

3. Los datos del publicador de usuario internos no exponen ningún acceso para las aplicaciones cliente y se usan para almacenar la parte secreta de los datos del usuario.

   * Se establecen mediante las API de servidor y de administración.
   * Se obtienen mediante las API de servidor y de administración.

### Establecimiento de los datos del publicador de usuario

El siguiente fragmento de código muestra cómo establecer los 3 tipos de datos del publicador mediante las API de cliente y de servidor.

```csharp theme={null}
// Use Client API to set User Publisher Data for current user
public void ClientSetUserPublisherData() {
    PlayFabClientAPI.UpdateUserPublisherData(new UpdateUserDataRequest() {
         Data  = new Dictionary<string, string>() {
             { "SomeKey", "SomeValue" }
         }
    },
    result => Debug.Log("Complete setting Regular User Publisher Data"),
    error =>
    {
        Debug.Log("Error setting Regular User Publisher Data");
        Debug.Log(error.GenerateErrorReport());
    });
}

// Use Server API to set Read-Only User Publisher Data for selected user
public void ServerSetUserPublisherReadOnlyData() {
    PlayFabServerAPI.UpdateUserPublisherReadOnlyData(new UpdateUserDataRequest() {
         PlayFabId = "< PlayFab Player Id >",
         Data  = new Dictionary<string, string>() {
             { "SomeKey", "SomeValue" }
         }
    },
    result => Debug.Log("Complete setting Read-Only User Publisher Data"),
    error =>
    {
        Debug.Log("Error setting Read-Only User Publisher Data");
        Debug.Log(error.GenerateErrorReport());
    });
}

// Use Server API to set Internal User Publisher Data for selected user
public void ServerSetUserPublisherInternalData() {
    PlayFabServerAPI.UpdateUserPublisherInternalData(new UpdateUserInternalDataRequest() {
         PlayFabId = "< PlayFab Player Id >",
         Data  = new Dictionary<string, string>() {
             { "SomeKey", "SomeValue" }
         }
    },
    result => Debug.Log("Complete setting Internal User Publisher Data"),
    error =>
    {
        Debug.Log("Error setting Internal User Publisher Data");
        Debug.Log(error.GenerateErrorReport());
    });
}
```

### Obtención de los datos del publicador de usuario

El siguiente fragmento de código muestra cómo obtener los 3 tipos de datos del publicador mediante las API de cliente y de servidor.

```csharp theme={null}
// Use Client API to get Regular User Publisher Data for selected user
public void ClientGetUserPublisherData() {
    PlayFabClientAPI.GetUserPublisherData(new GetUserDataRequest() {
        PlayFabId = "<PlayFab Player Id>"
    }, result => {
        if (result.Data == null || !result.Data.ContainsKey("SomeKey")) Debug.Log("No SomeKey");
        else Debug.Log("SomeKey: " + result.Data["SomeKey"]);
    },
    error => {
        Debug.Log("Got error getting Regular Publisher Data:");
        Debug.Log(error.GenerateErrorReport());
    });
}

// Use Client API to get Read-Only User Publisher Data for selected user
public void ClientGetUserPublisherReadOnlyData() {
    PlayFabClientAPI.GetUserPublisherReadOnlyData(new GetUserDataRequest() {
        PlayFabId = "<PlayFab Player Id>"
    }, result => {
        if (result.Data == null || !result.Data.ContainsKey("SomeKey")) Debug.Log("No SomeKey");
        else Debug.Log("SomeKey: " + result.Data["SomeKey"]);
    },
    error => {
        Debug.Log("Got error getting Read-Only Publisher Data:");
        Debug.Log(error.GenerateErrorReport());
    });
}

// Use Server API to get Internal User Publisher Data for selected user
public void ServerGetUserPublisherInternalData() {
    PlayFabServerAPI.GetUserPublisherInternalData(new GetUserDataRequest() {
        PlayFabId = "<PlayFab Player Id>"
    }, result => {
        if (result.Data == null || !result.Data.ContainsKey("SomeKey")) Debug.Log("No SomeKey");
        else Debug.Log("SomeKey: " + result.Data["SomeKey"]);
    },
    error => {
        Debug.Log("Got error getting Internal Publisher Data:");
        Debug.Log(error.GenerateErrorReport());
    });
}
```

## Consulte también

* [Inicio rápido de datos del título](/services/playfab/live-service-management/game-configuration/titledata/quickstart)
* [Inicio rápido de CloudScript](/services/playfab/live-service-management/service-gateway/automation/cloudscript/quickstart))


## Related topics

- [Datos del título](/es/services/playfab/live-service-management/game-configuration/titledata/index.md)
- [Inicio rápido de datos del título](/es/services/playfab/live-service-management/game-configuration/titledata/quickstart.md)
- [Uso de los datos de publicador del jugador para recompensar el juego en varios títulos](/es/services/playfab/player-progression/player-data/using-player-publisher-data.md)
- [Datos de jugador](/es/services/playfab/player-progression/player-data/index.md)
- [Configuración del uso compartido de datos en Partner Center](/es/services/xbox-services/fundamentals/portal-config/live-data-sharing-udc.md)
