Evita el abuso de la API de Gemini con la Verificación de aplicaciones de Firebase

Cuando llamas a una API directamente desde una app web o para dispositivos móviles, la API es vulnerable al abuso por parte de clientes no autorizados. Si deseas llamar a Gemini API directamente desde tu app para dispositivos móviles o app web, debes protegerla contra el abuso con Firebase AI Logic y aplicar Firebase App Check. Cuando apliques App Check, solo se permitirán las solicitudes entrantes que se verifiquen como provenientes de tu app real o de un dispositivo no adulterado.

Ir a las instrucciones de configuración

Firebase AI Logic proporciona una puerta de enlace de proxy que te permite realizar la integración con Firebase App Check y proteger el Gemini API cuando tus apps para dispositivos móviles y web lo llaman directamente. Cuando se aplica App Check para Firebase AI Logic, se ayuda a proteger tanto el Gemini Developer API como el Agent Platform Gemini API (formerly Vertex AI).

App Check para Firebase AI Logic también admite la protección contra repetición, lo que significa que un token de App Check solo se puede usar una vez.


Resumen general del funcionamiento de App Check

Con App Check, los dispositivos que ejecutan tu app usan un proveedor de certificación de apps o de dispositivos que verifica uno o ambos de los siguientes procedimientos:

  • Las solicitudes se originan en tu app auténtica
  • Las solicitudes se originan en un dispositivo auténtico, no adulterado

Esta certificación se adjunta a cada solicitud que tu app realiza con un SDK de Firebase AI Logic. Cuando se aplica App Check, se rechazan las solicitudes de clientes sin una certificación válida, así como las solicitudes provenientes de una app o una plataforma que no autorizaste.

Cuando configures App Check, considera agregar la protección contra repetición, que hace que los tokens de App Check sean de uso único. Esta opción ofrece protección mejorada más allá de la protección básica y te permite establecer un nivel de protección adecuado para tu app y tus casos de uso.

Puedes encontrar información detallada sobre App Check en su documentación, incluidas las descripciones de los proveedores de certificación y las cuotas y los límites aplicables.

Configurar App Check

Las siguientes instrucciones están optimizadas para configurar la aplicación de Firebase App Check en Firebase AI Logic.

Paso 1: Aplicar App Check

A partir de principios de julio de 2026, durante el flujo de trabajo de configuración guiada en la consola de Firebase, Firebase aplicará automáticamente Firebase App Check para Firebase AI Logic y, así, proteger Gemini API.

Sin embargo, si ya habías configurado Firebase AI Logic en tu proyecto de Firebase antes de principios de julio de 2026 (o si App Check no se aplica por algún otro motivo), puedes aplicar App Check por tu cuenta siguiendo estas instrucciones.

  1. Verifica si ya se aplica App Check para Firebase AI Logic.

    1. En la consola de Firebase, ve a la pestaña Seguridad > App Check > pestaña APIs.

    2. Busca la fila de Firebase AI Logic. Si dice Unenforced, continúa con el resto de estas instrucciones.

  2. Haz clic en la fila de Firebase AI Logic y verás los gráficos de métricas. Debajo de esos gráficos, haz clic en Configurar.

  3. En la primera pantalla del diálogo (Protección básica), selecciona Aplicada y, luego, haz clic en Continuar.

  4. En la siguiente pantalla (Protección contra repeticiones), selecciona Inhabilitada y, luego, haz clic en Continuar.

  5. En la pantalla final, revisa las consideraciones para aplicar App Check y asegúrate de que todo esté listo para hacerlo App Check. Si ya tienes todo listo, haz clic en Continuar.

    No es necesario que registres tus apps si solo quieres aplicar App Check y usar solo el proveedor de depuración con Firebase AI Logic en una app de preproducción. Sin embargo, cuando esté todo listo para lanzar tu app a los usuarios finales, deberás registrar tus apps como parte de la configuración de un proveedor de certificación de producción (como App Attest, Play Integrity o reCAPTCHA Enterprise).

Paso 2: Configura el proveedor de depuración para el desarrollo local

Para el desarrollo local, puedes configurar el proveedor de depuración de App Check y, aun así, mantener App Check aplicado para Firebase AI Logic.

Swift

Sigue estos pasos para usar el proveedor de depuración mientras ejecutas la app en un simulador de manera interactiva (por ejemplo, durante el desarrollo local):

  1. En tu proyecto de Xcode, importa FirebaseAppCheck y, luego, inicializa App Check con la fábrica del proveedor de depuración antes de configurar Firebase.

    import SwiftUI
    import FirebaseCore
    import FirebaseAppCheck
    
    @main
    struct YourApp: App {
      init() {
        let providerFactory = AppCheckDebugProviderFactory()
        AppCheck.setAppCheckProviderFactory(providerFactory)
        FirebaseApp.configure()
      }
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
    
  2. Obtén tu token de depuración:

    1. Inicia la app en el simulador o en tu dispositivo de prueba.

    2. Abre la consola de Xcode y busca el token de depuración de App Check. Por ejemplo:

      <Warning> [AppCheckCore][I-GAC004001] App Check debug token: '123a4567-b89c-12d3-e456-789012345678'.
      
    3. Copia el token (por ejemplo, 123a4567-b89c-12d3-e456-789012345678).

  3. Registra tu token de depuración en App Check:

    1. En la consola de Firebase, ve a la pestaña Apps de Seguridad > App Check.

    2. Busca tu app, haz clic en el menú ampliado () y, luego, selecciona Administrar tokens de depuración.

    3. Sigue las instrucciones en pantalla para registrar tu token de depuración.

Para obtener detalles sobre el proveedor de depuración (incluido cómo obtener un nuevo token de depuración), consulta la documentación oficial de App Check.

Kotlin

Sigue estos pasos para usar el proveedor de depuración mientras ejecutas la app en un emulador de manera interactiva (por ejemplo, durante el desarrollo local):

  1. En la compilación de depuración, configura App Check para que use la fábrica de proveedores de depuración:

    Firebase.initialize(context = this)
    Firebase.appCheck.installAppCheckProviderFactory(
        DebugAppCheckProviderFactory.getInstance(),
    )
  2. Obtén tu token de depuración:

    1. Ejecuta tu app en el emulador o en tu dispositivo de prueba.

    2. Busca el token de depuración App Check en tus registros. Por ejemplo:

      D DebugAppCheckProvider: Enter this debug secret into the allow list
      in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
      
    3. Copia el token (por ejemplo, 123a4567-b89c-12d3-e456-789012345678).

  3. Registra tu token de depuración en App Check:

    1. En la consola de Firebase, ve a la pestaña Apps de Seguridad > App Check.

    2. Busca tu app, haz clic en el menú ampliado () y, luego, selecciona Administrar tokens de depuración.

    3. Sigue las instrucciones en pantalla para registrar tu token de depuración.

Para obtener detalles sobre el proveedor de depuración (incluido cómo obtener un nuevo token de depuración), consulta la documentación oficial de App Check.

Java

Sigue estos pasos para usar el proveedor de depuración mientras ejecutas la app en un emulador de manera interactiva (por ejemplo, durante el desarrollo local):

  1. En la compilación de depuración, configura App Check para que use la fábrica de proveedores de depuración:

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());
  2. Obtén tu token de depuración:

    1. Ejecuta tu app en el emulador o en tu dispositivo de prueba.

    2. Busca el token de depuración App Check en tus registros. Por ejemplo:

      D DebugAppCheckProvider: Enter this debug secret into the allow list
      in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
      
    3. Copia el token (por ejemplo, 123a4567-b89c-12d3-e456-789012345678).

  3. Registra tu token de depuración en App Check:

    1. En la consola de Firebase, ve a la pestaña Apps de Seguridad > App Check.

    2. Busca tu app, haz clic en el menú ampliado () y, luego, selecciona Administrar tokens de depuración.

    3. Sigue las instrucciones en pantalla para registrar tu token de depuración.

Para obtener detalles sobre el proveedor de depuración (incluido cómo obtener un nuevo token de depuración), consulta la documentación oficial de App Check.

Web

A continuación, se explica cómo usar el proveedor de depuración mientras ejecutas la app desde localhost de forma interactiva (por ejemplo, durante el desarrollo local):

  1. En la compilación de depuración, habilita el modo correspondiente estableciendo self.FIREBASE_APPCHECK_DEBUG_TOKEN en true antes de inicializar App Check. Por ejemplo:

    self.FIREBASE_APPCHECK_DEBUG_TOKEN = true;
    initializeAppCheck(app, { /* App Check options */ });
    
  2. Visita la app web de forma local y abre las herramientas para desarrolladores del navegador. En la consola de depuración, verás un token de depuración:

    AppCheck debug token: "123a4567-b89c-12d3-e456-789012345678".
    You will need to safelist it in the Firebase console for it to work.
    
  3. Registra tu token de depuración en App Check:

    1. En la consola de Firebase, ve a la pestaña Apps de Seguridad > App Check.

    2. Busca tu app, haz clic en el menú ampliado () y, luego, selecciona Administrar tokens de depuración.

    3. Sigue las instrucciones en pantalla para registrar tu token de depuración.

Para obtener detalles sobre el proveedor de depuración (incluido cómo obtener un nuevo token de depuración), consulta la documentación oficial de App Check.

Dart

iOS+

Sigue estos pasos para usar el proveedor de depuración mientras ejecutas la app en un simulador de manera interactiva (por ejemplo, durante el desarrollo local):

  1. Activa App Check con el proveedor de depuración justo después de inicializar tu app de Firebase:

    import 'package:flutter/material.dart';
    import 'package:firebase_core/firebase_core.dart';
    
    // Import the firebase_app_check plugin
    import 'package:firebase_app_check/firebase_app_check.dart';
    
    Future<void> main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await Firebase.initializeApp();
      await FirebaseAppCheck.instance.activate(
        // Set appleProvider to `AppleProvider.debug`
        appleProvider: AppleProvider.debug,
      );
      runApp(App());
    }
    
  2. Habilita el registro de depuración en tu proyecto de Xcode:

    1. Abre Producto > Esquema > Edit scheme.
    2. Selecciona Run en el menú de la izquierda y, luego, selecciona la pestaña Arguments.
    3. En la sección Arguments Passed on Launch, agrega -FIRDebugEnabled.
  3. Obtén tu token de depuración:

    1. Abre ios/Runner.xcworkspace con Xcode y ejecuta tu app en el simulador o en tu dispositivo de prueba.

    2. Abre la consola de Xcode y busca el token de depuración de App Check. Por ejemplo:

      <Warning> [AppCheckCore][I-GAC004001] App Check debug token: '123a4567-b89c-12d3-e456-789012345678'.
      
    3. Copia el token (por ejemplo, 123a4567-b89c-12d3-e456-789012345678).

  4. Registra tu token de depuración en App Check:

    1. En la consola de Firebase, ve a la pestaña Apps de Seguridad > App Check.

    2. Busca tu app, haz clic en el menú ampliado () y, luego, selecciona Administrar tokens de depuración.

    3. Sigue las instrucciones en pantalla para registrar tu token de depuración.

Android

Sigue estos pasos para usar el proveedor de depuración mientras ejecutas la app en un emulador de manera interactiva (por ejemplo, durante el desarrollo local):

  1. Activa App Check con el proveedor de depuración justo después de inicializar tu app de Firebase:

    import 'package:flutter/material.dart';
    import 'package:firebase_core/firebase_core.dart';
    
    // Import the firebase_app_check plugin
    import 'package:firebase_app_check/firebase_app_check.dart';
    
    Future<void> main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await Firebase.initializeApp();
      await FirebaseAppCheck.instance.activate(
        // Set androidProvider to `AndroidProvider.debug`
        androidProvider: AndroidProvider.debug,
      );
      runApp(App());
    }
    
  2. Obtén tu token de depuración:

    1. Ejecuta tu app en el emulador o en tu dispositivo de prueba.

    2. Busca el token de depuración App Check en tus registros. Por ejemplo:

      D DebugAppCheckProvider: Enter this debug secret into the allow list
      in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
      
    3. Copia el token (por ejemplo, 123a4567-b89c-12d3-e456-789012345678).

  3. Registra tu token de depuración en App Check:

    1. En la consola de Firebase, ve a la pestaña Apps de Seguridad > App Check.

    2. Busca tu app, haz clic en el menú ampliado () y, luego, selecciona Administrar tokens de depuración.

    3. Sigue las instrucciones en pantalla para registrar tu token de depuración.

Web

A continuación, se explica cómo usar el proveedor de depuración mientras ejecutas la app desde localhost de forma interactiva (por ejemplo, durante el desarrollo local):

  1. En el archivo web/index.html, configura self.FIREBASE_APPCHECK_DEBUG_TOKEN como true para habilitar el modo de depuración:

    <body>
      <script>
        self.FIREBASE_APPCHECK_DEBUG_TOKEN = true;
      </script>
    
      ...
    
    </body>
    
  2. Ejecuta la app web de forma local y abre las herramientas para desarrolladores del navegador. En la consola de depuración, verás un token de depuración:

    AppCheck debug token: "123a4567-b89c-12d3-e456-789012345678".
    You will need to safelist it in the Firebase console for it to work.
    

    Este token se almacena de forma local en tu navegador y se usará cada vez que uses la app en la misma combinación de navegador y máquina. Si quieres usar el token en otro navegador o en otra máquina, configura self.FIREBASE_APPCHECK_DEBUG_TOKEN como la cadena del token en lugar de true.

  3. Registra tu token de depuración en App Check:

    1. En la consola de Firebase, ve a la pestaña Apps de Seguridad > App Check.

    2. Busca tu app, haz clic en el menú ampliado () y, luego, selecciona Administrar tokens de depuración.

    3. Sigue las instrucciones en pantalla para registrar tu token de depuración.

Para obtener detalles sobre el proveedor de depuración (incluido cómo obtener un nuevo token de depuración), consulta la documentación oficial de App Check.

Unity

Sigue estos pasos para usar el proveedor de depuración mientras ejecutas la app en un emulador de manera interactiva (por ejemplo, durante el desarrollo local):

  1. En la consola de Firebase, crea un token de depuración:

    1. En la consola de Firebase, ve a la pestaña Apps de Seguridad > App Check.

    2. Busca tu app, haz clic en el menú ampliado () y, luego, selecciona Administrar tokens de depuración.

    3. Sigue las instrucciones en pantalla para crear un token de depuración nuevo.

  2. En el código de inicialización de tu app, agrega lo siguiente:

    using Firebase.AppCheck;
    
    void InitializeFirebase() {
      // Configure the Debug Provider factory with your debug token.
      DebugAppCheckProviderFactory.Instance.SetDebugToken("YOUR_DEBUG_TOKEN");
    
      // Set App Check to use the debug provider factory
      FirebaseAppCheck.SetAppCheckProviderFactory(
        DebugAppCheckProviderFactory.Instance);
    
      // Proceed to initialize Firebase as normal
    }
    

Para obtener detalles sobre el proveedor de depuración (incluido cómo obtener un nuevo token de depuración), consulta la documentación oficial de App Check.

Paso 3: Configura App Check para los usuarios finales y la producción

Cuando esté todo listo para lanzar tu app para los usuarios finales, deberás registrar tus apps y configurar un proveedor de certificación de producción (como App Attest, Play Integrity o reCAPTCHA Enterprise).

  1. Elige un proveedor de certificación de producción y sigue las instrucciones de implementación en los siguientes vínculos:

    Ten en cuenta que, si ninguno de estos proveedores de certificación es suficiente para tus necesidades, puedes implementar un proveedor personalizado que use un proveedor de certificación externo o tus propias técnicas de certificación.

  2. (Recomendado) Mejora la protección agregando la protección contra repetición, lo que significa que un token de App Check solo se puede usar una vez.

Mejora la protección agregando protección contra repeticiones

Te recomendamos usar las versiones más recientes del SDK, pero asegúrate de usar, como mínimo, una de estas versiones para usar la protección contra repeticiones:
Plataformas de Apple v12.2.0 y versiones posteriores | BoM de Android v34.14.0 y versiones posteriores (App Check v19.1.0 y versiones posteriores) | Web v12.14.0 y versiones posteriores | Flutter v4.15.0 y versiones posteriores (App Check v4.10.0 y versiones posteriores) | Unity v13.12.0 y versiones posteriores

De forma predeterminada, App Check usa tokens de sesión que tienen un tiempo de actividad (TTL) configurable entre 30 minutos y 7 días. El SDK de App Check almacena en caché estos tokens de sesión, los envía junto con las solicitudes de tu app y se pueden volver a usar hasta que venza su TTL. El uso de tokens de sesión se considera una protección básica.

Sin embargo, puedes mejorar la protección más allá de esta protección básica aplicando la protección contra repetición, que usa tokens de uso limitado. Cuando se aplica la protección contra repetición, sucede lo siguiente:

  • App Check bloqueará las solicitudes a Firebase AI Logic que usen tokens de sesión. En cambio, App Check solo permitirá una solicitud a Firebase AI Logic si usa un token de uso limitado recién generado.

  • Después de que se verifica el token de uso limitado, se consume para que se pueda usar solo una vez, lo que evita los ataques de repetición.

  • El SDK de App Check genera un nuevo token de uso limitado para cada solicitud. Ten en cuenta que este proceso puede afectar tus solicitudes, ya que agrega cierta latencia y, a veces, costos (según tu proveedor de certificación).

Configura y aplica la protección contra repeticiones

Haz clic en tu proveedor de Gemini API para ver el contenido y el código específicos del proveedor en esta página.

Sigue estos pasos para configurar y aplicar la protección contra repeticiones:

  1. Si aún no lo hiciste, configura App Check siguiendo las instrucciones que se indican más arriba en esta página.

  2. Habilita el uso de tokens de uso limitado.

    En tu app, durante la creación de instancias, establece el parámetro useLimitedUseAppCheckTokens en true:

    Swift

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens.
    let ai = FirebaseAI.firebaseAI(
      backend: .googleAI(),
      useLimitedUseAppCheckTokens: true
    )
    
    // ...
    
    

    Kotlin

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens.
    val ai = Firebase.ai(
      backend = GenerativeBackend.googleAI(),
      useLimitedUseAppCheckTokens = true
    )
    
    // ...
    
    

    Java

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens.
    FirebaseAI ai = FirebaseAI.getInstance(
      /* backend: */ GenerativeBackend.googleAI(),
      /* useLimitedUseAppCheckTokens: */ true
    );
    
    // ...
    
    

    Web

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens.
    const ai = getAI(firebaseApp, {
      backend: new GoogleAIBackend(),
      useLimitedUseAppCheckTokens: true
    });
    
    // ...
    
    

    Dart

    
    // ...
    
    // During instantiation, enable usage of limited-use tokens
    final ai = await FirebaseAI.googleAI(
      useLimitedUseAppCheckTokens: true,
    );
    
    // ...
    
    

    Unity

    // ...
    
    // During instantiation, enable usage of limited-use tokens
    var ai = FirebaseAI.GetInstance(
      useLimitedUseAppCheckTokens: true
    );
    
    // ...
    
  3. Aplica la protección contra la repetición.

    1. En la base de código de tu app, asegúrate de haber habilitado el uso de tokens de uso limitado (consulta el paso anterior).

    2. En la consola de Firebase, ve a Seguridad > App Check.

    3. Expande la vista de métricas para Firebase AI Logic.

    4. Asegúrate de que la Protección básica esté Aplicada y, luego, haz clic en Continuar.

    5. Para la protección contra repeticiones, elige Sin aplicar (solo supervisión) o Aplicada.

      Ten en cuenta lo siguiente para decidir cuándo aplicar la protección contra repeticiones:

      • Se recomienda supervisar tus solicitudes si es probable que una cantidad considerable de usuarios usen versiones anteriores de tu app sin que se habiliten los tokens de uso limitado. Si aplicas la protección contra repeticiones de inmediato, se bloquearán las solicitudes de esos usuarios.

      • Puedes supervisar específicamente la métrica No verificadas (token reutilizado), que indica la cantidad de solicitudes que tienen un token que ya se usó en una solicitud anterior. Supervisa esta métrica en la consola de Firebase (ve a la pestaña APIs en Seguridad > App Check ).

        Si una parte significativa de las solicitudes recientes se encuentran en esta categoría, puedes evitar interrumpir a los usuarios y considerar esperar para aplicar la protección contra repeticiones hasta que más usuarios hayan actualizado la app a una versión que use tokens de uso limitado.

Comprende cómo se integra Firebase AI Logic con App Check

Para usar los SDKs de Firebase AI Logic, se debe habilitar la API de Firebase AI Logic (firebasevertexai.googleapis.com) en tu proyecto de Firebase. Esto se debe a que las solicitudes realizadas por los SDKs de Firebase AI Logic se envían primero al servidor de Firebase AI Logic, que actúa como una puerta de enlace de proxy en la que se realiza la verificación de Firebase App Check antes de que se permita que la solicitud continúe al backend del proveedor de "Gemini API" que elegiste y a las APIs para acceder a los modelos de Gemini y Imagen.

Preguntas frecuentes y solución de problemas

Encuentra preguntas frecuentes y soluciones de problemas adicionales o códigos de error relacionados con Firebase AI Logic.