Usa la API de ARCore en Google Cloud

Selecciona la plataforma:

Las funciones de ARCore, como la API de Geospatial y las Cloud Anchors, usan la API de ARCore alojada en Google Cloud. Cuando usas estas funciones, tu aplicación usa credenciales para acceder al servicio de la API de ARCore.

En esta guía de inicio rápido, se describe cómo configurar tu aplicación para que pueda comunicarse con el servicio de la API de ARCore alojado en Google Cloud.

Crea un proyecto de Google Cloud nuevo o usa uno existente.

Si tienes un proyecto existente, selecciónalo.

Ir al selector de proyectos

Si no tienes un proyecto de Google Cloud existente, crea uno.

Crear un nuevo proyecto

Habilita la API de ARCore

Para usar la API de ARCore, debes habilitarla en tu proyecto.

Habilita la API de ARCore

Configura un método de autorización

Una aplicación de Unity puede comunicarse con la API de ARCore a través de dos métodos de autorización diferentes: la autorización sin clave, que es el método recomendado, y la autorización con clave de API:

  • En Android, la autorización sin clave usa una combinación del nombre del paquete de la aplicación y la huella digital de la clave de firma para autorizar tu aplicación.

    En iOS, la autorización sin clave usa un token firmado para controlar el acceso a la API. Este método requiere que tengas un servidor para firmar tokens y controlar el acceso a la API.

  • Una clave de API es una cadena que identifica un proyecto de Google Cloud. En general, las claves de API no se consideran seguras, ya que suelen ser accesibles para los clientes. Considera usar la autorización sin clave para comunicarte con la API de ARCore.

Sin llave

Para autorizar tu app con la autenticación sin clave, crea IDs de cliente de OAuth 2.0.

Cómo determinar las huellas digitales de las claves de firma

Un ID de cliente de OAuth 2.0 usa la huella digital de la clave de firma de tu app para identificarla.

Cómo obtener la huella digital de la firma de depuración

Cuando ejecutas o depuras tu proyecto, las herramientas del SDK de Android firman automáticamente tu app con un certificado de depuración generado.

Usa el siguiente comando para obtener la huella digital del certificado de depuración.

Mac/Linux
keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
Windows
keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore

La utilidad keytool te solicita que ingreses una contraseña para el almacén de claves. La contraseña predeterminada del almacén de claves de depuración es android. Luego, la utilidad keytool imprime la huella digital en la terminal. Por ejemplo:

   Certificate fingerprint: SHA1: <strong>DA:39:A3:EE:5E:6B:4B:0D:32:55:BF:EF:95:60:18:90:AF:D8:07:09

Cómo obtener una huella digital de firma de un almacén de claves

Si tienes un archivo de almacén de claves, usa la utilidad keytool para determinar la huella digital.

keytool -list -v -alias your-key-name -keystore path-to-production-keystore

Luego, la utilidad keytool imprime la huella digital en la terminal. Por ejemplo:

   Certificate fingerprint: SHA1: DA:39:A3:EE:5E:6B:4B:0D:32:55:BF:EF:95:60:18:90:AF:D8:07:09

Cómo obtener la clave de firma de tu app desde la firma de apps de Play

Cuando usas la firma de apps de Play, Google administra la clave de firma de tu app y la usa para firmar tus APKs. Esta clave se debe usar para la huella digital de la firma.

  1. En la página Firma de apps de Google Play Console, desplázate hasta Certificado de clave de firma de la app.
  2. Usa la huella digital del certificado SHA-1.

Crea IDs de cliente de OAuth 2.0

Para cada clave de firma aplicable de los pasos anteriores, crea un ID de cliente de OAuth 2.0 en las credenciales de tu proyecto de Google Cloud.

  • En Google Cloud, abre la página Credenciales.

    Credenciales

  • Haz clic en Crear credenciales y, luego, selecciona ID de cliente de OAuth en el menú.

  • Completa los campos obligatorios de la siguiente manera:

    • Tipo de aplicación: Elige Android.
    • Nombre del paquete: Usa el nombre del paquete declarado en tu archivo AndroidManifest.xml.
    • Huella digital del certificado SHA-1: Usa una huella digital obtenida en los pasos anteriores.
  • Presiona Crear.

Cómo incluir las bibliotecas requeridas

  1. Incluye com.google.android.gms:play-services-auth:16+ en las dependencias de tu app.
  2. Si usas la minificación de código, agrégala al archivo build.gradle de tu app:

    buildTypes {
      release {
        ...
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
      }
    }
    
  3. Agrega lo siguiente al archivo proguard-rules.pro de tu app:

    -keep class com.google.android.gms.common.** { *; }
    -keep class com.google.android.gms.location.** { *; }
    -keep class com.google.android.gms.auth.** { *; }
    -keep class com.google.android.gms.tasks.** { *; }
    

Tu app ya está configurada para usar la autenticación sin llave.

Sin llave

ARCore admite la autorización de llamadas a la API en iOS con un token web JSON. El token debe estar firmado por una cuenta de servicio de Google.

Para generar tokens para iOS, debes tener un extremo en tu servidor que satisfaga los siguientes requisitos:

  • Tu propio mecanismo de autorización debe proteger el extremo.

  • El extremo debe generar un token nuevo cada vez, de modo que se cumpla lo siguiente:

    • Cada usuario recibe un token único.
    • Los tokens no vencen de inmediato.

Crea una cuenta de servicio y una clave de firma

Sigue estos pasos para crear una cuenta de servicio de Google y una clave de firma:

  1. En Google Cloud, abre la página Credenciales.
    Credenciales
  2. Haz clic en Crear credenciales > Cuenta de servicio.
  3. En Detalles de la cuenta de servicio, escribe un nombre para la cuenta nueva y, luego, haz clic en Crear.
  4. En la página Permisos de la cuenta de servicio, ve al menú desplegable Selecciona un rol. Selecciona Cuentas de servicio > Creador de tokens de cuentas de servicio y, luego, haz clic en Continuar.
  5. En la página Otorga a usuarios acceso a esta cuenta de servicio, haz clic en Listo.
  6. En la página Credenciales, busca la sección Cuentas de servicio y haz clic en el nombre de la cuenta que acabas de crear.
  7. En la página Detalles de la cuenta de servicio, desplázate hacia abajo hasta la sección Claves y selecciona Agregar clave > Crear clave nueva.
  8. Selecciona JSON como el tipo de clave y haz clic en Crear.

    Se descargará un archivo JSON que contiene la clave privada en tu máquina. Almacena el archivo de claves JSON descargado en una ubicación segura.

Crea tokens en tu servidor

Para crear tokens nuevos (JWT) en tu servidor, usa las bibliotecas de JWT estándar y el archivo JSON que descargaste de forma segura desde tu nueva cuenta de servicio.

Crea tokens en tu máquina de desarrollo

Para generar JWT en tu máquina de desarrollo, usa el siguiente comando oauth2l:

oauth2l fetch --cache "" --jwt --json $KEYFILE --audience "https://arcore.googleapis.com/"

Es necesario especificar una ubicación de caché vacía con la marca --cache para garantizar que se genere un token diferente cada vez. Asegúrate de recortar la cadena resultante. Los espacios adicionales o los caracteres de salto de línea harán que la API rechace el token.

Firma el token

Debes usar el algoritmo RS256 y los siguientes parámetros para firmar el JWT:

  • iss: Es la dirección de correo electrónico de la cuenta de servicio.
  • sub: Es la dirección de correo electrónico de la cuenta de servicio.
  • iat: Es la hora de la época de Unix en la que se generó el token, en segundos.
  • exp, iat + 3600 (1 hora) Es la hora de la época de Unix en la que vence el token, en segundos.
  • aud: Es el público. Debe establecerse en https://arcore.googleapis.com/.

Las reclamaciones no estándar no son obligatorias en la carga útil del JWT, aunque la reclamación uid puede ser útil para identificar al usuario correspondiente.

Si usas un enfoque diferente para generar tus JWTs, como usar una API de Google en un entorno administrado por Google, asegúrate de firmar tus JWTs con los reclamos de esta sección. Sobre todo, asegúrate de que el público sea el correcto.

Pasa el token en la sesión de ARCore

  1. Asegúrate de que la estrategia de autenticación de iOS esté configurada como AuthenticationToken. En Unity, ve a Edit > Project Settings > XR Plug-in Management > ARCore Extensions. En el menú desplegable Estrategia de autenticación para iOS, selecciona la opción Token de autenticación.
  2. Cuando obtengas un token, pásalo a tu sesión de ARCore con ARAnchorManager.SetAuthToken():

    // Designate the token to authorize ARCore API calls
    // on the iOS platform. This should be called each time the application's token is refreshed.
    ARAnchorManager.SetAuthToken(authToken);
    

Tu app ya está configurada para usar la autenticación sin llave.

Ten en cuenta lo siguiente cuando pases un token a la sesión:

  • Si usaste una clave de API para crear la sesión, ARCore ignorará el token y registrará un error.

    Si ya no necesitas la clave de API, bórrala en Google Developers Console y quítala de tu app.

  • ARCore ignora los tokens que contienen espacios o caracteres especiales.

  • Por lo general, los tokens vencen después de una hora. Si existe la posibilidad de que tu token caduque mientras lo usas, obtén uno nuevo y pásalo a la API.

Clave de API

  1. En Google Cloud, abre la página Credenciales.
    Credenciales
  2. Haz clic en Crear credenciales y, luego, selecciona Clave de API en el menú.
    El diálogo Se creó la clave de API muestra la cadena de la clave que acabas de crear.
  3. En Unity, ve a Edit > Project Settings > XR Plug-in Management > ARCore Extensions. Para cada plataforma de destino (Android, iOS), en el menú desplegable Estrategia de autenticación, selecciona la opción Clave de API. Luego, inserta tu clave de API en los campos correspondientes.

  4. Revisa la documentación sobre las restricciones de la clave de API para proteger tu clave de API.

Tu app ya está configurada para usar claves de API.

¿Qué sigue?

Con la autorización configurada, consulta las siguientes funciones de ARCore que la usan: