Cómo usar claves de API

Seleccionar plataforma: Android iOS JavaScript Servicio web

Antes de comenzar

Antes de comenzar a usar el SDK de Places para Android, necesitas un proyecto con una cuenta de facturación y el SDK de Places para Android habilitado. Si deseas obtener más información, consulta Set up in Cloud Console.

Cómo crear claves de API

La clave de API es un identificador único que se utiliza para autenticar solicitudes asociadas a tu proyecto con fines de uso y facturación. Debes tener, al menos, una clave de API asociada a tu proyecto.

Para crear una clave de API, sigue estos pasos:

Console

  1. Ve a la página Google Maps Platform > Credenciales.

    Ir a la página Credenciales

  2. En la página Credenciales, haz clic en Crear credenciales > Clave de API.
    El diálogo Se creó la clave de API mostrará la clave de API que acabas de crear.
  3. Haz clic en Cerrar.
    La nueva clave de API aparecerá en la página Credenciales debajo de Claves de API.
    (Recuerda restringir la clave de API antes de utilizarla en producción).

SDK de Cloud

gcloud alpha services api-keys create \
    --project "PROJECT" \
    --display-name "DISPLAY_NAME"

Obtén más información sobre el SDK de Google Cloud, la instalación del SDK de Cloud y los siguientes comandos:

Cómo restringir las claves de API

Google recomienda que restrinjas las claves de API limitando su uso solo a aquellas APIs que sean necesarias para tu aplicación. La restricción de las claves de API agrega seguridad a tu aplicación, ya que la protege de solicitudes no autorizadas. Para obtener más información, consulta Prácticas recomendadas sobre la seguridad de la API.

Cuando restringes tu clave de API, debes proporcionar la huella digital del certificado SHA-1 de la clave que se usó para firmar la aplicación. Existen dos tipos de certificados:

  • Certificado de depuración: Usa este tipo de certificado solo con apps que estés probando y con otros códigos que no sean de producción. No intentes publicar una app firmada con un certificado de depuración. Las herramientas del SDK de Android generan este certificado automáticamente cuando ejecutas una compilación de depuración.
  • Certificado de lanzamiento: Usa este certificado cuando estés listo para lanzar tu app en una tienda de aplicaciones. Las herramientas del SDK de Android generan este certificado cuando ejecutas una compilación de lanzamiento.

Para obtener más información sobre los certificados digitales, consulta la guía Firma tu app.

Para obtener más información sobre cómo obtener la huella digital de tu certificado, consulta Autentica tu cliente. En cambio, si usas la firma de apps de Play, debes ir a la página de firma de apps en Play Console para obtener la huella digital del certificado.

Para restringir una clave de API, sigue estos pasos:

Console

  1. Ve a la página Google Maps Platform > Credenciales.

    Ir a la página Credenciales

  2. Selecciona la clave de API para la que deseas establecer una restricción. Aparecerá la página de propiedades de la clave de API.
  3. En Restricciones de clave, establece las siguientes restricciones:
    • Restricciones de aplicaciones:
      1. Selecciona Apps de Android.
      2. Haz clic en + Agregar nombre del paquete y huella digital.
      3. Ingresa el nombre del paquete y la huella digital del certificado SHA-1. Por ejemplo:
        com.example.android.mapexample
        BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75
    • Restricciones de API:
      1. Haz clic en Restringir clave.
      2. Selecciona API de Places en el menú desplegable Seleccionar API. Si la API de Places no aparece en la lista, debes habilitarla.
  4. Para finalizar los cambios, haz clic en Guardar.

SDK de Cloud

Enumera las claves existentes.

gcloud services api-keys list --project="PROJECT"

Borra las restricciones que existen sobre la clave existente.

gcloud alpha services api-keys update "projects/PROJECT/keys/KEY_ID" \
    --clear-restrictions

Establece restricciones nuevas sobre la clave existente.

gcloud alpha services api-keys update "projects/PROJECT/keys/KEY_ID" \
    --api_target="places-backend.googleapis.com"
    --allowed-application="sha1_fingerprint=SHA1_FINGERPRINT,package_name=ANDROID_PACKAGE_NAME"

Obtén más información sobre el SDK de Google Cloud, la instalación del SDK de Cloud y los siguientes comandos:

Cómo encontrar la información del certificado de tu app

La clave de API se basa en una forma corta del certificado digital de tu app, que se conoce como su huella digital SHA-1. Para mostrar la huella digital SHA-1 para tu certificado, primero asegúrate de estar usando el certificado correcto. Puedes tener dos certificados:

  • Certificado de depuración: Las herramientas del SDK de Android generan este certificado automáticamente cuando realizas una compilación de depuración. Utiliza este certificado solo con apps que estés probando. No intentes publicar una app firmada con un certificado de depuración. El certificado de depuración se describe más detalladamente en Firma en el modo de depuración en la documentación para desarrolladores de Android.
  • Certificado de lanzamiento: Las herramientas del SDK de Android generan este certificado cuando realizas una compilación de lanzamiento. También puedes generar este certificado con el programa keytool. Utiliza este certificado cuando estés listo para lanzar tu app al público.

Con Gradle

Gradle facilita la obtención de la información de firma de tu app. Solo debes ejecutar ./gradlew signingReport.

El resultado debería ser similar a este:

Task :app:signingReport

Variant: debug
Config: debug
Store: ~/.android/debug.keystore
Alias: AndroidDebugKey
MD5: 76:4E:BF:C3:59:DA:D3:8F:98:D6:3C:DB:87:A4:5B:E7
SHA1: 99:8E:73:B8:3A:A3:A3:C4:C1:D4:19:08:F6:7E:9E:F6:75:29:4C:B2
SHA-256: 6C:01:12:53:90:94:73:B5:66:D6:07:FF:A5:6F:AB:30:AE:99:20:55:0F:B3:12:22:4C:46:7E:02:3D:7E:6D:1D
Valid until: Friday, June 25, 2049
----------
Variant: release
Config: release
Store: app/keystore.jks
Alias: keystore
MD5: 1E:63:0F:14:67:E0:04:BD:98:4C:EB:2B:09:EF:7E:1E
SHA1: 2C:DF:9F:D1:A3:0D:1E:01:48:34:5D:91:52:0B:D8:8A:5A:07:45:C3
SHA-256: 12:66:CE:4B:90:FD:64:1A:4D:79:9E:78:AD:59:0C:21:D8:53:61:EE:2B:90:E4:67:CE:65:A0:76:04:13:23:89
Valid until: Tuesday, September 29, 2116

Manualmente

Sigue los pasos que se incluyen a continuación para mostrar la huella digital SHA-1 de un certificado mediante el programa keytool con el parámetro -v. Para obtener más información sobre Keytool, consulta la documentación de Oracle.

Certificado de depuración

Cómo visualizar la huella digital del certificado de depuración

  1. Busca el archivo de almacén de claves correspondiente a tu depuración. El nombre del archivo es debug.keystore y se crea la primera vez que compilas el proyecto. De forma predeterminada, se almacena en el mismo directorio que los archivos de tu dispositivo virtual de Android (AVD):

    • macOS y Linux: ~/.android/
    • Windows Vista y Windows 7: C:\Users\your_user_name\.android\
  2. Indica la huella digital SHA-1:

    • En el caso de macOS o Linux, abre una ventana de la terminal y escribe lo siguiente:

      keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
    • En el caso de Windows Vista y Windows 7, ejecuta lo siguiente:

      keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

Deberías ver un resultado similar a esto:

Alias name: androiddebugkey
Creation date: Jan 01, 2013
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 4aa9b300
Valid from: Mon Jan 01 08:04:04 UTC 2013 until: Mon Jan 01 18:04:04 PST 2033
Certificate fingerprints:
     MD5:  AE:9F:95:D0:A6:86:89:BC:A8:70:BA:34:FF:6A:AC:F9
     SHA1: BB:0D:AC:74:D3:21:E1:43:07:71:9B:62:90:AF:A1:66:6E:44:5D:75
     Signature algorithm name: SHA1withRSA
     Version: 3

Certificado de lanzamiento

Cómo visualizar la huella digital del certificado de la versión

  1. Busca el archivo de almacén de claves correspondiente a tu certificado de lanzamiento. No existe una ubicación ni un nombre predeterminados para este archivo. Si no especificas estos datos al compilar tu app para su lanzamiento, el archivo .apk quedará sin firmar, y deberás firmarlo antes de publicarlo. Para el certificado de lanzamiento, también necesitas el alias del certificado y las contraseñas del almacén de claves y del certificado. Puedes indicar los alias de todas las claves en un almacén de claves. Para ello, ingresa lo siguiente:

    keytool -list -keystore your_keystore_name

    Reemplaza your_keystore_name por la ruta de acceso completamente calificada y el nombre del almacén de claves, incluida la extensión .keystore. Se te pedirá que ingreses la contraseña del almacén de claves. Luego, keytool mostrará todos los alias en el almacén de claves.

  2. En una terminal o un símbolo del sistema, ingresa lo siguiente:

    keytool -list -v -keystore your_keystore_name -alias your_alias_name

    Reemplaza your_keystore_name por la ruta de acceso completamente calificada y el nombre del almacén de claves, incluida la extensión .keystore. Reemplaza your_alias_name por el alias que le asignaste al certificado cuando lo creaste.

Deberías ver un resultado similar a esto:

Alias name: <alias_name>
Creation date: Feb 02, 2013
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 4cc9b300
Valid from: Mon Feb 02 08:01:04 UTC 2013 until: Mon Feb 02 18:05:04 PST 2033
Certificate fingerprints:
    MD5:  AE:9F:95:D0:A6:86:89:BC:A8:70:BA:34:FF:6B:AC:F9
    SHA1: BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:90:AF:A1:66:6E:44:5D:75
    Signature algorithm name: SHA1withRSA
    Version: 3

La línea que comienza con SHA1 contiene la huella digital SHA-1 del certificado. La huella digital es una secuencia de 20 números hexadecimales de dos dígitos separados por dos puntos.

¿Cuáles son los siguientes pasos?

Ahora que tienes una clave de API, crea y configura un proyecto tal como se describe en Cómo configurar un proyecto de Android Studio.