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

# Autenticación de PlayFab con el inicio de sesión de Google Play Games en Unity

> Tutorial paso a paso para agregar el inicio de sesión de Google Play Games a un proyecto de Unity con el SDK de PlayFab, que abarca la configuración de Play Console y la autenticación de jugadores.

# Configuración de la autenticación de PlayFab con el inicio de sesión de Google Play Games en Unity

## Requisitos previos

* Un proyecto compilado con el motor de juegos Unity.
* Una cuenta de desarrollador de Google.
* Una cuenta de desarrollador de PlayFab que tenga acceso a un título de juego en PlayFab.
* Las [extensiones del editor de Unity de PlayFab y el SDK de Unity](/services/playfab/sdks/unity3d/quickstart).
* El [SDK de Google Play Games](https://github.com/playgameservices/play-games-plugin-for-unity).
* Familiaridad con [Conceptos básicos de inicio de sesión y procedimientos recomendados](/services/playfab/identity/player-identity/login/login-basics-best-practices).

## Introducción

En primer lugar, comenzamos configurando algunos elementos básicos en Google Play. Hay varias guías buenas sobre cómo realizar algunas de estas tareas, así que no vamos a reinventar la rueda.

1. Cree una **aplicación**: si no tiene una aplicación creada, debe hacerlo en la [Google Play Developer Console](https://play.google.com/apps/publish).

2. Compile el AAB de su juego y cárguelo para pruebas internas. Puede seguir [esta](https://support.google.com/googleplay/android-developer/answer/9859348?visit_id=638373214207471441-2235763004\&rd=1) guía sobre cómo publicar la aplicación en el canal de **pruebas internas**. Durante el proceso de firma, tenga en cuenta que, para el paquete de aplicación, tiene que usar su propio almacén de claves para este fin. Consulte [este](https://docs.unity3d.com/Manual/android-keystore-create.html) documento sobre cómo crear un almacén de claves.

3. Configure los servicios de Google Play Games siguiendo las instrucciones de esta página: [Setting Up Google Play Games Services](https://developers.google.com/games/services/console/enabling).

4. Descargue el [SDK de Google Play Games](https://github.com/playgameservices/play-games-plugin-for-unity) e instálelo.

5. Instale el SDK de Unity de PlayFab (si no sabe cómo realizar esta tarea, siga la [guía de inicio rápido de Unity3D](/services/playfab/sdks/unity3d/quickstart)).

## Configuración de Google Play Games

Puede configurar Google Play Games desde el conjunto de herramientas que se instala con el SDK de Google Play Games. Puede acceder a estas herramientas de la siguiente manera:

* Vaya a la pestaña **Window**.
* Seleccione **Google Play Games**.
* Vaya a **Setup**.
* A continuación, acceda a **Android Setup**.

  <img src="https://mintcdn.com/microsoft-4404708b/mLCHf0iQv3VidfBe/images/playfab/identity/player-identity/platform-specific-authentication/tutorials/google-unity/google-unity-configuring-google-play-games.png?fit=max&auto=format&n=mLCHf0iQv3VidfBe&q=85&s=cc4e610420ae613914a545645f437f28" alt="Configuración de Google Play Games" width="698" height="156" data-path="images/playfab/identity/player-identity/platform-specific-authentication/tutorials/google-unity/google-unity-configuring-google-play-games.png" />
* Aparece la ventana de configuración de Android; en esta pantalla debemos escribir la definición de recursos y el identificador de cliente de la aplicación web.

  <img src="https://mintcdn.com/microsoft-4404708b/mLCHf0iQv3VidfBe/images/playfab/identity/player-identity/platform-specific-authentication/tutorials/google-unity/google-unity-paste-android-resources-empty.png?fit=max&auto=format&n=mLCHf0iQv3VidfBe&q=85&s=b13a6bfbd822a8442c007a5163769cf3" alt="Pegar recursos de Android vacío" width="653" height="578" data-path="images/playfab/identity/player-identity/platform-specific-authentication/tutorials/google-unity/google-unity-paste-android-resources-empty.png" />

### Obtención de la definición de recursos

* Siga [estos](https://developer.android.com/games/pgs/unity/unity-start#get-android-resources) pasos para obtener la definición de recursos de Android.

### Obtención del identificador de cliente de la aplicación web

Para que el inicio de sesión de Google funcione con PlayFab, debe usar un identificador de cliente web que puede obtener creando una credencial de identificador de cliente de OAuth para el tipo "Web application".

Antes de crear el identificador de cliente de OAuth, necesita conocer el **punto de conexión de API** de PlayFab, que puede encontrar siguiendo estos pasos:

* Inicie sesión en [Game Manager](https://developer.playfab.com/).

* Seleccione su título.

* Vaya a la configuración del título haciendo clic en el **icono de engranaje** situado junto al nombre del título y seleccione **Title Settings**.

  <img src="https://mintcdn.com/microsoft-4404708b/mLCHf0iQv3VidfBe/images/playfab/identity/player-identity/platform-specific-authentication/tutorials/google-unity/google-unity-pf-title-settings.png?fit=max&auto=format&n=mLCHf0iQv3VidfBe&q=85&s=54512b7841fc8a5d274f0012efca8998" alt="Configuración del título en PlayFab" width="290" height="223" data-path="images/playfab/identity/player-identity/platform-specific-authentication/tutorials/google-unity/google-unity-pf-title-settings.png" />

* Seleccione la pestaña **API Features**.

* Copie el campo **API endpoint**.

  <img src="https://mintcdn.com/microsoft-4404708b/mLCHf0iQv3VidfBe/images/playfab/identity/player-identity/platform-specific-authentication/tutorials/google-unity/google-unity-pf-api-endpoint.png?fit=max&auto=format&n=mLCHf0iQv3VidfBe&q=85&s=80e6521a94996698755cfe971e321438" alt="Escribir el punto de conexión de API en Google Play Developer Console" width="539" height="293" data-path="images/playfab/identity/player-identity/platform-specific-authentication/tutorials/google-unity/google-unity-pf-api-endpoint.png" />

Ahora que conoce el punto de conexión de API de su título, siga los pasos descritos [aquí](https://developers.google.com/workspace/guides/create-credentials#web-application) para crear la credencial de identificador de cliente de OAuth.

* Al crear el identificador de cliente, debe agregar el punto de conexión de API como **Authorized JavaScript origin** para su identificador de cliente.

  <img src="https://mintcdn.com/microsoft-4404708b/mLCHf0iQv3VidfBe/images/playfab/identity/player-identity/platform-specific-authentication/tutorials/google-unity/google-unity-authorized-javascript-origins.png?fit=max&auto=format&n=mLCHf0iQv3VidfBe&q=85&s=9a2f0d445c948f5386bae1350a4d5074" alt="Orígenes de JavaScript autorizados" width="504" height="215" data-path="images/playfab/identity/player-identity/platform-specific-authentication/tutorials/google-unity/google-unity-authorized-javascript-origins.png" />

* Además, asegúrese de agregar el URI de redireccionamiento de su propia aplicación como **Authorized Redirect URI**. Si no realiza este paso, obtendrá un error de **mismatch redirect\_uri**.

  <img src="https://mintcdn.com/microsoft-4404708b/mLCHf0iQv3VidfBe/images/playfab/identity/player-identity/platform-specific-authentication/tutorials/google-unity/google-unity-authorized-redirect-uris.png?fit=max&auto=format&n=mLCHf0iQv3VidfBe&q=85&s=dc66e1b57e200b52f04f5f0ac13f16a2" alt="URI de redireccionamiento autorizados" width="514" height="206" data-path="images/playfab/identity/player-identity/platform-specific-authentication/tutorials/google-unity/google-unity-authorized-redirect-uris.png" />

Después de crear el identificador de cliente, verá una pantalla similar a la siguiente, en la que obtendrá la cadena del identificador de cliente generada y un secreto de cliente.

<img src="https://mintcdn.com/microsoft-4404708b/mLCHf0iQv3VidfBe/images/playfab/identity/player-identity/platform-specific-authentication/tutorials/google-unity/google-unity-client-id-created.png?fit=max&auto=format&n=mLCHf0iQv3VidfBe&q=85&s=87ed059a93128acb745348cdfb97e859" alt="Identificador de cliente de OAuth creado" width="500" height="540" data-path="images/playfab/identity/player-identity/platform-specific-authentication/tutorials/google-unity/google-unity-client-id-created.png" />

Ahora, puede volver a la ventana de configuración de Android en Unity y pegar el identificador de cliente en el cuadro de texto **Client ID**:

<img src="https://mintcdn.com/microsoft-4404708b/mLCHf0iQv3VidfBe/images/playfab/identity/player-identity/platform-specific-authentication/tutorials/google-unity/google-unity-paste-client-id.png?fit=max&auto=format&n=mLCHf0iQv3VidfBe&q=85&s=e880647b4bccd88ff590b840b8d1f642" alt="Pegar el identificador de cliente" width="651" height="119" data-path="images/playfab/identity/player-identity/platform-specific-authentication/tutorials/google-unity/google-unity-paste-client-id.png" />

Ahora que ambos valores están rellenados, puede seleccionar **Setup**:

<img src="https://mintcdn.com/microsoft-4404708b/mLCHf0iQv3VidfBe/images/playfab/identity/player-identity/platform-specific-authentication/tutorials/google-unity/google-unity-setup-android-configuration.png?fit=max&auto=format&n=mLCHf0iQv3VidfBe&q=85&s=83928abc8c46b9fac2698afc9f069219" alt="Configuración de Android completada" width="653" height="582" data-path="images/playfab/identity/player-identity/platform-specific-authentication/tutorials/google-unity/google-unity-setup-android-configuration.png" />

## Configuración del inicio de sesión de Google en PlayFab

PlayFab tiene su propio proceso para configurar un inicio de sesión de Google. Puede realizar esta configuración en su cuenta de desarrollador de PlayFab. Si no tiene una, puede [registrarse para obtener una cuenta de desarrollador gratuita](https://developer.playfab.com).

Para configurar Google en PlayFab:

* Vaya a la sección **Add-ons** de su panel.
* Vaya al **complemento de Google**.
* Desde ahí, seleccione el botón **Install Google**.

Hay algunos datos que debe escribir en este formulario:

* El **Google App Package ID**: este campo es el nombre de su paquete de Android. Por ejemplo, nuestro ejemplo usa `com.playfab.gpgexample`.
* La **Google App License Key**: aunque este campo es obligatorio, no está relacionado con el inicio de sesión de Google. Este campo sirve para configurar la validación de recibos mediante nuestras **API de validación de recibos**.

<Note>
  Puede obtener esta clave de licencia en la [Google Developer Console](https://play.google.com/apps/publish); vaya a su aplicación, en la sección **Monetize**. Seleccione la sección denominada **Monetization Setup**. Aquí, desplácese hacia abajo hasta que vea un cuadro de texto **Licensing** y copie y pegue la clave pública RSA codificada en Base64 en este campo.
</Note>

* El **Google OAuth Client ID**: el identificador de cliente web que usó en la configuración del **SDK de Google Play Games** en Unity.
* El **Google OAuth Client Secret**: la clave secreta que obtuvo al crear el identificador de cliente de OAuth.
* La **Service Account Key**: este campo espera una cadena JSON de clave de cuenta de servicio; debe crear una clave de cuenta de servicio siguiendo [estos](https://developers.google.com/workspace/guides/create-credentials#create_a_service_account) pasos. A continuación, cree credenciales para esa cuenta de servicio siguiendo los pasos indicados [aquí](https://developers.google.com/workspace/guides/create-credentials#create_credentials_for_a_service_account). Después de obtener el archivo JSON de credenciales, pegue todo el contenido JSON en este campo.

La configuración del complemento debería tener este aspecto antes de guardar:

<img src="https://mintcdn.com/microsoft-4404708b/mLCHf0iQv3VidfBe/images/playfab/identity/player-identity/platform-specific-authentication/tutorials/google-unity/google-unity-google-addon-config.png?fit=max&auto=format&n=mLCHf0iQv3VidfBe&q=85&s=481bc6a5ddebf25c3194630e2444c753" alt="Configuración del complemento de Google en PlayFab" width="550" height="713" data-path="images/playfab/identity/player-identity/platform-specific-authentication/tutorials/google-unity/google-unity-google-addon-config.png" />

<Tip>
  Asegúrese de seleccionar **Save Settings**.
</Tip>

## Adición del inicio de sesión de Google a su juego de Unity

El código para que funcione el inicio de sesión de Google es bastante mínimo. Está el código de inicialización, que se coloca en el método Start (o en cualquier lugar donde inicialice o arranque la aplicación).

Este código puede estar en distintos lugares, según la arquitectura y el marco de su juego o aplicación. En cualquier caso, el código siguiente inicializa Google Play Games.

<Note>
  *Asegúrese* de no olvidar las instrucciones **using**, para poder usar el SDK de Google Play Games.
</Note>

```csharp theme={null}
using GooglePlayGames;
using GooglePlayGames.BasicApi;
using PlayFab;
using PlayFab.ClientModels;
using UnityEngine;

public class PFGoogleSignInUnity : MonoBehaviour
{
    void Start()
    {
        PlayGamesPlatform.Instance.Authenticate(ProcessAuthentication);
    }

    internal void ProcessAuthentication(SignInStatus status)
    {
        if (status == SignInStatus.Success)
        {
            PlayGamesPlatform.Instance.RequestServerSideAccess(false, ProcessServerAuthCode);
        }
    }

    private void ProcessServerAuthCode(string serverAuthCode)
    {
        Debug.Log("Server Auth Code: " + serverAuthCode);

        var request = new LoginWithGooglePlayGamesServicesRequest
        {
            ServerAuthCode = serverAuthCode,
            CreateAccount = true,
            TitleId = PlayFabSettings.TitleId
        };

        PlayFabClientAPI.LoginWithGooglePlayGamesServices(request, OnLoginWithGooglePlayGamesServicesSuccess, OnLoginWithGooglePlayGamesServicesFailure);
    }

    private void OnLoginWithGooglePlayGamesServicesSuccess(LoginResult result)
    {
        Debug.Log("PF Login Success LoginWithGooglePlayGamesServices");
    }

    private void OnLoginWithGooglePlayGamesServicesFailure(PlayFabError error)
    {
        Debug.Log("PF Login Failure LoginWithGooglePlayGamesServices: " + error.GenerateErrorReport());
    }
}
```

Analicemos exactamente lo que está sucediendo:

* En primer lugar, iniciamos sesión con `PlayGamesPlatform.Instance.Authenticate`: esta función recibe como parámetro una función de devolución de llamada que controla el resultado y nos permite saber si el usuario pudo iniciar sesión correctamente en función del *SignInStatus* recibido.
* Si no agrega su cuenta de prueba a la aplicación, el resultado de *SignInStatus* de la devolución de llamada siempre es *Canceled* durante las pruebas. Si se produce este problema, siga los pasos de [esta](https://developers.google.com/games/services/console/testpub) guía para agregar evaluadores a su aplicación de Google.

<Note>
  La llamada a `PlayGamesPlatform.Instance.Authenticate` es lo que hará que aparezca el cuadro de diálogo de inicio de sesión de **Google Play Games**.
</Note>

* A continuación, si el inicio de sesión es correcto, realizamos una llamada a `PlayGamesPlatform.Instance.RequestServerSideAccess`, que recibe otra devolución de llamada y devuelve la cadena ServerAuthCode.

* Después, realizamos la llamada `PlayFabClientAPI.LoginWithGooglePlayGamesServices` y pasamos el `AuthCode` que acabamos de obtener de Google como parámetro `ServerAuthCode`.

* Por último, según el resultado de la llamada a `LoginWithGooglePlayGamesServices`, se llama a `OnLoginWithGooglePlayGamesServicesSuccess` o a `OnLoginWithGooglePlayGamesServicesFailure`; estas devoluciones de llamada son las que controlan el resultado de la operación de inicio de sesión en PlayFab. En este punto, debería ver un inicio de sesión correcto en su panel.

Esperamos que esta guía le haya resultado útil. Pero si tiene preguntas, no dude en plantearlas en nuestros [foros de la comunidad](https://community.playfab.com/).


## Related topics

- [Autenticación específica de la plataforma](/es/services/playfab/identity/player-identity/platform-specific-authentication/index.md)
- [Migración del inicio de sesión de Google al de Google Play Games en Unity](/es/services/playfab/identity/player-identity/platform-specific-authentication/google-play-games-sign-in-migration-details.md)
- [Método alternativo para la migración del inicio de sesión de Google al inicio de sesión de Play Games](/es/services/playfab/identity/player-identity/platform-specific-authentication/google-play-games-sign-in-migration-fallback.md)
- [Migración de juegos de Unity al inicio de sesión de Google Play Games](/es/services/playfab/identity/player-identity/platform-specific-authentication/google-play-games-sign-in-migration.md)
- [Autenticación de inicio de sesión anónimo de servidor](/es/services/playfab/identity/player-identity/platform-specific-authentication/anonymous-login.md)
