Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Autenticarse en Unity usando los servicios de juegos de Google Play

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Puede usar los servicios de Google Play Games para iniciar sesión en los jugadores en un juego de Android basado en Firebase y Unity. Para usar el inicio de sesión de los servicios de Google Play Games con Firebase, primero inicie sesión en el reproductor con Google Play Games y solicite un código de autenticación OAuth 2.0 cuando lo haga. Luego, pase el código de autenticación a PlayGamesAuthProvider para generar una credencial de Firebase, que puede usar para autenticarse con Firebase.

Antes de que empieces

Configura tu proyecto de Unity

  1. Agregue el archivo de configuración de Firebase y el SDK de Firebase Unity a su proyecto de Unity como se describe en Agregar Firebase a su proyecto de Unity . Siga las instrucciones para Android.

    Asegúrese de importar FirebaseAuth.unitypackage .

  2. En el Editor de Unity, en Configuración de compilación > Configuración del jugador > Otras configuraciones , establezca el nombre del paquete de Android de su juego.

  3. Luego, en Configuración de compilación > Configuración del reproductor > Configuración de publicación , seleccione o cree un almacén de claves y una clave, que se usarán para firmar su paquete de Android. Tu APK debe estar firmado para que el inicio de sesión de Play Juegos funcione; este requisito se aplica no solo para la publicación, sino también durante el desarrollo de tu juego.

Configura tu proyecto de Firebase

  1. En la consola de Firebase , vaya al proyecto de Firebase en el que registró su proyecto de Unity.

  2. Establezca la huella digital SHA-1 de su juego desde la página Configuración de la consola Firebase, usando la clave que configuró en Unity.

    Puede obtener la huella digital SHA-1 de su clave con el comando keytool :

    keytool -exportcert -list -v \
        -alias YOUR-KEY-NAME -keystore PATH-TO-KEYSTORE

    Alternativamente, puede obtener el hash SHA de su certificado de firma con el comando Gradle signingReport :

    gradlew signingReport

    Tu APK debe estar firmado con esta clave, incluso durante el desarrollo.

  3. Habilite Google Play Juegos como proveedor de inicio de sesión:

    1. Encuentre el ID de cliente del servidor web y el secreto del cliente de su proyecto. El ID de cliente del servidor web identifica su proyecto de Firebase en los servidores de autenticación de Google Play.

      Para encontrar estos valores:

      1. Abra su proyecto de Firebase en la página de credenciales de la consola de API de Google .
      2. En la sección ID de cliente de OAuth 2.0 , abra la página de detalles del cliente web (creado automáticamente por Google Service) . Esta página enumera su ID de cliente de servidor web y su secreto.
    2. Luego, en Firebase console , abra la sección Autenticación .

    3. En la pestaña Método de inicio de sesión, habilite el proveedor de inicio de sesión de Play Games . Deberá especificar el ID de cliente del servidor web y el secreto del cliente de su proyecto, que obtuvo de la consola de API.

Configura los servicios de Play Juegos con la información de tu aplicación de Firebase

  1. En Google Play Console , abra su aplicación Google Play o cree una.

  2. En la sección Crecer , haga clic en Servicios de juegos de Play > Configuración y administración > Configuración .

  3. Haga clic en Sí, mi juego ya usa las API de Google , seleccione su proyecto de Firebase de la lista y luego haga clic en Usar .

  4. En la página de configuración de los servicios de Play Juegos, haga clic en Agregar credencial .

    1. Seleccione el tipo de servidor de juegos .
    2. En el campo Cliente de OAuth , seleccione el ID de cliente web de su proyecto. Asegúrese de que sea el mismo ID de cliente que especificó cuando activó el inicio de sesión de Play Juegos.
    3. Guarde sus cambios.
  5. Todavía en la página de configuración de los servicios de Play Juegos, haga clic en Agregar credencial nuevamente.

    1. Seleccione el tipo de Android .
    2. En el campo Cliente de OAuth , seleccione el ID de cliente de Android de su proyecto. (Si no ve su ID de cliente de Android, asegúrese de configurar la huella digital SHA-1 de su juego en la consola de Firebase).
    3. Guarde sus cambios.
  6. En las páginas Eventos , Logros y Tablas de clasificación , cree los recursos de Play Juegos que quiera usar con su juego (si no quiere usar ninguno inmediatamente, puede crear una entrada de marcador de posición). Luego, en cualquiera de las páginas Eventos , Logros o Tablas de clasificación , haga clic en Obtener recursos y copie el fragmento de recursos de Android en algún lugar conveniente. Necesitará el fragmento para configurar el complemento de servicios de Google Play Games.

    El fragmento de recursos se parece al siguiente ejemplo:

    <?xml version="1.0" encoding="utf-8"?>
    <!--
    Google Play game services IDs.
    Save this file as res/values/games-ids.xml in your project.
    -->
    <resources>
      <!-- app_id -->
      <string name="app_id" translatable="false">123456789000</string>
      <!-- package_name -->
      <string name="package_name" translatable="false">com.example.game</string>
      <!-- event Wiped Raid -->
      <string name="event_wiped_raid" translatable="false">CgkIpKjv1a4PEAIYBA</string>
    </resources>
    
  7. En la página Testers , agregue las direcciones de correo electrónico de cualquier usuario que necesite poder iniciar sesión en su juego antes de lanzarlo en Play Store.

Integre el inicio de sesión de Play Juegos en su juego

  1. Descarga la última versión del complemento Play Games para Unity y extráelo.

  2. Importe el paquete de Unity del complemento a su proyecto de Unity. Puede encontrar el paquete de Unity en el directorio de current-build del archivo de lanzamiento.

  3. Configura el complemento de Play Juegos:

    1. Haga clic en Ventana > Juegos de Google Play > Configuración > Configuración de Android para abrir la pantalla Configuración de Android .
    2. Pegue el fragmento de recursos de Android que obtuvo de Play Console en el campo Definición de recursos .
    3. Pegue su ID de cliente del servidor web, que proporcionó cuando habilitó el inicio de sesión de Play Games en Firebase console, en el campo ID de cliente .
    4. Haga clic en Configuración .
  4. En su juego, configure un cliente de Play Juegos con la configuración RequestServerAuthCode habilitada:

    using GooglePlayGames;
    using GooglePlayGames.BasicApi;
    using UnityEngine.SocialPlatforms;
    using System.Threading.Tasks;
    
    PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder()
        .RequestServerAuthCode(false /* Don't force refresh */)
        .Build();
    
    PlayGamesPlatform.InitializeInstance(config);
    PlayGamesPlatform.Activate();
    
  5. Luego, cuando un jugador elige iniciar sesión con Play Games, llama a Social.localUser.Authenticate() :

    Social.localUser.Authenticate((bool success) => {
      // handle success or failure
    });
    

Autenticar con Firebase

Después de agregar el inicio de sesión de Play Juegos a su juego, puede usar el código de autenticación de los servicios de Play Juegos para autenticarse con Firebase.

  1. Una vez que el jugador haya iniciado sesión correctamente con Play Juegos, en el controlador de continuación de inicio de sesión, obtenga un código de autenticación para la cuenta del jugador:

    Social.localUser.Authenticate((bool success) => {
      if (success) {
        authCode = PlayGamesPlatform.Instance.GetServerAuthCode();
      }
    });
    
  2. Luego, intercambie el código de autenticación de los servicios de Play Juegos por una credencial de Firebase y use la credencial de Firebase para autenticar al jugador:

    Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
    Firebase.Auth.Credential credential =
        Firebase.Auth.PlayGamesAuthProvider.GetCredential(authCode);
    auth.SignInWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInWithCredentialAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInWithCredentialAsync encountered an error: " + task.Exception);
        return;
      }
    
      Firebase.Auth.FirebaseUser newUser = task.Result;
      Debug.LogFormat("User signed in successfully: {0} ({1})",
          newUser.DisplayName, newUser.UserId);
    });
    

Próximos pasos

Después de que un usuario inicia sesión por primera vez, se crea una nueva cuenta de usuario y se vincula a su ID de Play Juegos. Esta nueva cuenta se almacena como parte de su proyecto de Firebase y se puede usar para identificar a un usuario en cada aplicación de su proyecto.

En su juego, puede obtener el UID de Firebase del usuario del objeto Firebase.Auth.FirebaseUser :

Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null) {
  string playerName = user.DisplayName;

  // The user's Id, unique to the Firebase project.
  // Do NOT use this value to authenticate with your backend server, if you
  // have one; use User.TokenAsync() instead.
  string uid = user.UserId;
}

En sus Reglas de seguridad de Firebase Realtime Database y Cloud Storage, puede obtener la ID de usuario única del usuario que inició sesión de la variable de auth y usarla para controlar a qué datos puede acceder un usuario.

Para obtener la información de jugador de Play Games de un usuario o para acceder a los servicios de Play Games, use las API proporcionadas por el complemento de Play Games.

Para cerrar la sesión de un usuario, llame a SignOut() :

auth.SignOut();