Selecciona la plataforma: Android iOS JavaScript

Usa App Check para proteger tu clave de API

La Verificación de aplicaciones de Firebase protege las llamadas de tu app a Google Maps Platform, ya que bloquea el tráfico que proviene de fuentes que no son apps legítimas. Para ello, verifica si hay un token de un proveedor de certificación, como App Attest. Integrar tus apps con la Verificación de aplicaciones ayuda a protegerlas contra solicitudes maliciosas, por lo que no se te cobrarán las llamadas a la API no autorizadas.

¿App Check es la opción adecuada para mí?

Se recomienda usar App Check en la mayoría de los casos, pero no es necesario ni se admite en los siguientes casos:

  • Estás usando el SDK de Places original. App Check solo es compatible con el SDK de Places (nuevo).
  • Apps privadas o experimentales Si tu app no es de acceso público, no es necesario usar App Check.
  • Si tu app solo se usa de servidor a servidor, no es necesario App Check. Sin embargo, si el servidor que se comunica con GMP es utilizado por clientes públicos (como las apps para dispositivos móviles), considera usar App Check para proteger ese servidor en lugar de GMP.
  • Los proveedores de certificación recomendados de App Check no funcionarán en los dispositivos que tu proveedor de certificación considere que están comprometidos o que no son confiables. Si necesitas admitir estos dispositivos, puedes implementar un servicio de certificación personalizado. Para obtener más información, consulta las instrucciones.

Descripción general de los pasos de implementación

En términos generales, estos son los pasos que seguirás para integrar tu app con App Check:

  1. Agrega Firebase a tu app.
  2. Agrega e inicializa la biblioteca de la Verificación de aplicaciones.
  3. Agrega el proveedor de tokens a tu app.
  4. Inicializa las APIs de Places y de App Check.
  5. Habilita la depuración.
  6. Supervisa las solicitudes de tu app y decide si aplicarás la aplicación de políticas.

Una vez que realices la integración con App Check, podrás ver las métricas de tráfico del backend en Firebase console. Estas métricas proporcionan un desglose de las solicitudes según si están acompañadas de un token válido de Verificación de aplicaciones. Consulta la documentación de Firebase App Check para obtener más información.

Cuando te asegures de que la mayoría de las solicitudes provienen de fuentes legítimas y de que los usuarios actualizaron a la versión más reciente de tu app que incluye la implementación de la Verificación de aplicaciones, puedes activar la aplicación forzosa. Una vez que se aplique la Verificación de aplicaciones, esta rechazará todo el tráfico que no tenga un token de Verificación de aplicaciones válido.

Consideraciones para planificar una integración de la Verificación de aplicaciones

Estos son algunos aspectos que debes tener en cuenta cuando planifiques tu integración:

  • Los proveedores de certificación que recomendamos, DeviceCheck o App Attest, están sujetos a las cuotas y limitaciones establecidas por Apple.

    Puedes optar por usar un proveedor de certificación personalizado, aunque este es un caso de uso avanzado. Consulta la documentación de Firebase App Check para obtener más información.

  • Los usuarios de tu app experimentarán cierta latencia al iniciarla. Sin embargo, después, cualquier nueva certificación periódica se realizará en segundo plano y los usuarios ya no deberían experimentar latencia. La cantidad exacta de latencia en el inicio depende del proveedor de certificación que elijas.

    La cantidad de tiempo durante el que el token de Verificación de aplicaciones es válido (el tiempo de actividad o TTL) determina la frecuencia de las revalidaciones. Esta duración se puede configurar en Firebase console. La reatestación se produce cuando transcurre aproximadamente la mitad del TTL. Para obtener más información, consulta los documentos de Firebase para tu proveedor de certificación.

Integra tu app con la Verificación de aplicaciones

Requisitos previos y requisitos

  • Una app con la versión 9.2 o posterior del SDK de Places instalada
  • El ID del paquete de la app.
  • Tu ID de equipo de Apple Member Center, en Membership.
  • Si planeas usar Device Check, tu archivo de clave privada y tu ID de clave.
  • Debes ser el propietario de la app en Cloud Console.
  • Necesitarás el ID del proyecto de la app desde Cloud Console.

Paso 1: Agrega Firebase a tu app

Sigue las instrucciones de la documentación para desarrolladores de Firebase para agregar Firebase a tu app.

Cuando registres tu app, obtendrás un archivo de configuración, GoogleService-Info.plist. Agrega este archivo, sin modificar, al nivel raíz de tu app.

SDK de Places Swift para iOS

import FirebaseCore
import FirebaseAppCheck
import GooglePlacesSwift

Swift

import FirebaseCore
import FirebaseAppCheck
import GooglePlaces

Objective-C

@import FirebaseCore;      
@import FirebaseAppCheck;
@import GooglePlaces;

Paso 2: Agrega la biblioteca de la Verificación de aplicaciones y, luego, inicialízala

Firebase proporciona instrucciones para cada proveedor de certificación predeterminado. En estas instrucciones, se muestra cómo configurar un proyecto de Firebase y agregar la biblioteca de App Check a tu app. Sigue los ejemplos de código proporcionados para inicializar App Check.

  1. Sigue las instrucciones de Firebase para agregar la biblioteca de App Check:
  2. Inicializa la Verificación de aplicaciones.
    • Si usas App Attest, consulta la documentación para desarrolladores de Firebase sobre App Attest.

      Sigue las instrucciones de Firebase App Check para crear una implementación de AppCheckProviderFactory y agregarla a tu archivo AppDelegate.

      SDK de Places Swift para iOS

      let providerFactory = YourAppCheckProviderFactory()
      AppCheck.setAppCheckProviderFactory(providerFactory)

      Swift

      let providerFactory = YourAppCheckProviderFactory()
      AppCheck.setAppCheckProviderFactory(providerFactory)

      Objective-C

      YourAppCheckProviderFactory *providerFactory =
          [[YourAppCheckProviderFactory alloc] init];
      [FIRAppCheck setAppCheckProviderFactory:providerFactory];
         
    • Si usas Device Check, agrega lo siguiente a tu AppDelegate:

      SDK de Places Swift para iOS

      AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())

      Swift

      AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())

      Objective-C

      [FIRAppCheck setAppCheckProviderFactory:providerFactory];
            

Paso 3: Agrega el proveedor de tokens

Crea un archivo llamado AppCheckTokenProvider (o, si usas Objective-C, dos archivos llamados AppCheckTokenProvider.h y AppCheckTokenProvider.m) en el nivel raíz de tu app. Agrega las siguientes instrucciones de importación y definición de clase:

SDK de Places Swift para iOS

// AppCheckTokenProvider.swift

import FirebaseAppCheck
import Foundation
import GooglePlacesSwift
      
struct TokenProvider: AppCheckTokenProvider {
  func fetchAppCheckToken() async throws -> String {
    return try await AppCheck.appCheck().token(forcingRefresh: false).token
  }
}
      

Swift

// AppCheckTokenProvider.swift

import FirebaseAppCheck
import Foundation
import GooglePlaces

class AppCheckTokenProvider: NSObject, GMSPlacesAppCheckTokenProvider {
  func fetchAppCheckToken() async throws -> String {
    return try await AppCheck.appCheck().token(forcingRefresh: false).token
  }
}

Objective-C

// AppCheckTokenProvider.h

@import Foundation;
@import GooglePlaces;

@interface AppCheckTokenProvider : NSObject <GMSPlacesAppCheckTokenProvider>
@end

// AppCheckTokenProvider.m

#import "AppCheckTokenProvider.h"

@import FirebaseAppCheck;

@implementation AppCheckTokenProvider

- (void)fetchAppCheckTokenWithCompletion:(nonnull GMSAppCheckTokenCompletion)completion {
  [[FIRAppCheck appCheck]
      tokenForcingRefresh:NO
               completion:^(FIRAppCheckToken *_Nullable token, NSError *_Nullable error) {
                 if (token) {
                   completion(token.token, nil);
                 } else {
                   completion(nil, error);
                 }
               }];
}

@end

Paso 4: Inicializa las APIs de Places y App Check

  1. En tu archivo AppDelegate, inicializa la API de Places:

    SDK de Places Swift para iOS

    PlacesClient.provideAPIKey("YOUR_API_KEY")

    Swift

    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

    Objective-C

    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
  2. Luego, inicializa la API de App Check:

    SDK de Places Swift para iOS

    PlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())

    Swift

    GMSPlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())

    Objective-C

    [GMSPlacesClient setAppCheckTokenProvider:[[AppCheckTokenProvider alloc] init]];

Paso 5: Habilita la depuración (opcional)

Si quieres desarrollar y probar tu app de forma local, o bien ejecutarla en un entorno de integración continua (CI), puedes crear una compilación de depuración de tu app que use un secreto de depuración para obtener tokens válidos de la Verificación de aplicaciones. Esto te permite evitar el uso de proveedores de certificación reales en tu compilación de depuración.

Para probar tu app en el simulador o en un dispositivo de prueba, haz lo siguiente:

  • Crea y configura la fábrica del proveedor de depuración de la Verificación de aplicaciones.

    En este ejemplo de código, se controlan las situaciones de depuración y producción:

    SDK de Places Swift para iOS

    #if targetEnvironment(simulator)
          let providerFactory = AppCheckDebugProviderFactory()
    #else
          let providerFactory = YourAppCheckProviderFactory()
    #endif

    Swift

    #if targetEnvironment(simulator)
          let providerFactory = AppCheckDebugProviderFactory()
    #else
          let providerFactory = YourAppCheckProviderFactory()
    #endif

    Objective-C

    if (targetEnvironment == simulator){
    
    FIRAppCheckDebugProviderFactory *providerFactory =
          [[FIRAppCheckDebugProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    }
    
    else {
    
    YourAppCheckProviderFactory *providerFactory =
          [[YourAppCheckProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    }
        
  • Habilita el registro en tu proyecto de Xcode, inicia la app y busca el token de depuración local en el registro.
  • Agrega este token a Firebase console.
  • Para obtener más información y consultar las instrucciones, consulta la documentación de App Check.

Para ejecutar tu app en un entorno de CI, haz lo siguiente:

  • Crea un token de depuración en Firebase console y agrégalo al almacén de claves seguro de tu sistema de CI.
  • En Xcode, agrega una variable de entorno a tu esquema de prueba con el nombre FIRAAppCheckDebugToken y $(APP_CHECK_DEBUG_TOKEN) (o algo similar) como el valor.
  • En la secuencia de comandos de prueba de CI, pasa el token de depuración como una variable de entorno.
  • Crea y configura la fábrica del proveedor de depuración de la Verificación de aplicaciones.

    En este ejemplo de código, se controlan las situaciones de depuración y producción:

    SDK de Places Swift para iOS

    #if DEBUG
      let providerFactory = AppCheckDebugProviderFactory()
    #else
      let providerFactory = YourAppCheckProviderFactory()
    #endif
    AppCheck.setAppCheckProviderFactory(providerFactory)
      

    Swift

    #if DEBUG
      let providerFactory = AppCheckDebugProviderFactory()
    #else
      let providerFactory = YourAppCheckProviderFactory()
    #endif
    AppCheck.setAppCheckProviderFactory(providerFactory)
      

    Objective-C

    #if DEBUG
    id<FIRAppCheckProviderFactory> providerFactory =
        [[FIRAppCheckDebugProviderFactory alloc] init];
    #else  // DEBUG
    id<FIRAppCheckProviderFactory> providerFactory =
        [[YourAppCheckProviderFactory alloc] init];
    #endif  // DEBUG
    AppCheck.setAppCheckProviderFactory(providerFactory)
  • Para obtener más información y consultar las instrucciones, consulta la documentación de App Check.

Paso 6: Supervisa las solicitudes de tu app y decide si aplicarás la aplicación de políticas

Antes de comenzar a aplicar la política, debes asegurarte de que no interrumpirás a los usuarios legítimos de tu app. Para ello, visita la pantalla de métricas de la Verificación de aplicaciones y observa qué porcentaje del tráfico de tu app está verificado, desactualizado o es ilegítimo. Una vez que veas que se verificó la mayoría de tu tráfico, podrás habilitar la aplicación de la política.

Consulta la documentación de la Verificación de aplicaciones de Firebase para obtener más información y las instrucciones.