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 quieres llamar a la Gemini API directamente desde tu app web o para dispositivos móviles, debes protegerla contra abusos con Firebase AI Logic y aplicando Firebase App Check. Cuando apliques App Check, solo se permitirán las solicitudes entrantes que se verifiquen que provienen de tu app real o de un dispositivo no alterado.

Ir a las instrucciones de configuración

Firebase AI Logic proporciona una puerta de enlace de proxy que te permite integrarte con Firebase App Check y proteger la Gemini API cuando tus apps web y para dispositivos móviles la llaman directamente. Cuando se aplica la App Check para Firebase AI Logic, 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 de cómo funciona 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 aspectos:

  • 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 todas las solicitudes que tu app realiza con un SDK de Firebase AI Logic. Cuando se aplique la App Check, se rechazarán las solicitudes de clientes que no tengan 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 protección contra repetición, que hace que los tokens de App Check sean de un solo uso. Esta opción ofrece una protección mejorada más allá de la protección inicial 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: Aplica 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 la Firebase App Check para Firebase AI Logic con el objetivo de ayudar a proteger el 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 no se aplica App Check por algún otro motivo), puedes aplicar App Check por tu cuenta con las siguientes 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 > Verificación de aplicaciones > 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 para ver los gráficos de métricas. Debajo de esos gráficos, haz clic en Configurar.

  3. En la primera pantalla del cuadro de diálogo (Protección de referencia), 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 asegurarte de que todo esté listo para aplicar App Check. Si tienes todo listo, haz clic en Continuar.

    No necesitas registrar tus apps si solo quieres aplicar App Check y únicamente usar el proveedor de depuración con Firebase AI Logic en una app de preproducción. Sin embargo, cuando tengas 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, al mismo tiempo, mantener la aplicación de App Check para Firebase AI Logic.

Swift

A continuación, se explica cómo 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, antes de configurar Firebase, inicializa App Check con la fábrica de proveedores de depuración.

    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 con App Check:

    1. En la consola de Firebase, ve a la pestaña Seguridad > Verificación de aplicaciones > Apps.

    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 token de depuración nuevo), consulta la documentación oficial de App Check.

Kotlin

A continuación, se explica cómo 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 la 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 con App Check:

    1. En la consola de Firebase, ve a la pestaña Seguridad > Verificación de aplicaciones > Apps.

    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 token de depuración nuevo), consulta la documentación oficial de App Check.

Java

A continuación, se explica cómo 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 la 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 con App Check:

    1. En la consola de Firebase, ve a la pestaña Seguridad > Verificación de aplicaciones > Apps.

    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 token de depuración nuevo), 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 de depuración 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 con App Check:

    1. En la consola de Firebase, ve a la pestaña Seguridad > Verificación de aplicaciones > Apps.

    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 token de depuración nuevo), consulta la documentación oficial de App Check.

Dart

iOS+

A continuación, se explica cómo usar el proveedor de depuración mientras ejecutas la app en un simulador de manera interactiva (por ejemplo, durante el desarrollo local):

  1. Activa la App Check con el proveedor de depuración justo después de inicializar la 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 con App Check:

    1. En la consola de Firebase, ve a la pestaña Seguridad > Verificación de aplicaciones > Apps.

    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

A continuación, se explica cómo usar el proveedor de depuración mientras ejecutas la app en un emulador de manera interactiva (por ejemplo, durante el desarrollo local):

  1. Activa la App Check con el proveedor de depuración justo después de inicializar la 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 la 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 con App Check:

    1. En la consola de Firebase, ve a la pestaña Seguridad > Verificación de aplicaciones > Apps.

    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 en su lugar 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 con App Check:

    1. En la consola de Firebase, ve a la pestaña Seguridad > Verificación de aplicaciones > Apps.

    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 token de depuración nuevo), consulta la documentación oficial de App Check.

Unity

A continuación, se explica cómo 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 Seguridad > Verificación de aplicaciones > Apps.

    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 token de depuración nuevo), 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 a 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 que se indican 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 de terceros 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 de entre 30 minutos y 7 días. El SDK de App Check almacena en caché estos tokens de sesión, que se envían 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 de referencia.

Sin embargo, puedes mejorar la protección más allá de esta protección de referencia aplicando la protección contra repetición, que usa tokens de uso limitado en su lugar. 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 creado.

  • Después de que se verifica el token de uso limitado, se consume para que solo se pueda usar 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 latencia y, a veces, costo (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.

A continuación, se indica cómo configurar y aplicar la protección contra repeticiones:

  1. Si aún no lo hiciste, configura App Check siguiendo las instrucciones que se encuentran 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. Aplicar 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 > Verificación de aplicaciones.

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

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

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

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

      • Te recomendamos que supervises tus solicitudes si es probable que una cantidad considerable de tus usuarios usen versiones anteriores de tu app sin el uso de tokens de uso limitado habilitado. Si aplicas la protección contra repeticiones de inmediato, se bloquearán las solicitudes de esos usuarios.

      • En particular, puedes supervisar la métrica No verificadas (token reutilizado), que es 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 Seguridad > Verificación de aplicaciones > APIs).

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

Comprender 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 que realizan los SDK 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 hacia Gemini API y acceda a los modelos de Gemini.

Preguntas frecuentes y solución de problemas

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