Una clave de API es una string única que se usa para enrutar solicitudes a tu proyecto de Firebase cuando interactúas con los servicios de Google y Firebase. En esta página, se describe la información básica sobre las claves de API y las prácticas recomendadas para usar y administrar claves de API con apps de Firebase.
Información general sobre las claves de API y Firebase
Las claves de API para Firebase son diferentes de las típicas claves de API
A diferencia de lo que sucede con las claves de API, las claves de API para los servicios de Firebase no se usan para controlar el acceso a los recursos de backend. Esto solo se puede hacer con Firebase Security Rules (para controlar qué usuarios finales pueden acceder a los recursos) y Firebase App Check (para controlar qué apps pueden acceder a los recursos).
Por lo general, debes proteger de manera meticulosa las claves de API (por ejemplo, con un servicio de Vault o la configuración de las claves como variables de entorno). Sin embargo, sí se pueden incluir las claves de API para los servicios de Firebase en el código o en los archivos de configuración registrados.
Si bien es seguro incluir las claves de API de los servicios de Firebase en el código, debes revisarlas y aplicarles las restricciones y los límites adecuados.
Creación de claves de API
Un proyecto de Firebase puede tener muchas claves de API, pero cada una de ellas solo se puede asociar con un único proyecto de Firebase.
Firebase crea claves de API de forma automática para tu proyecto cuando realizas cualquiera de las siguientes acciones:
- Crear un proyecto de Firebase >
Browser key
se crea automáticamente - Crear una app de Firebase para Apple >
iOS key
se crea automáticamente - Crear una app de Firebase para Android >
Android key
se crea automáticamente
También puedes crear tus propias claves de API en la consola de Google Cloud, por ejemplo, para el desarrollo o la depuración. Obtén más información acerca de cuándo se recomienda esto más adelante en esta página.
Encuentra tus claves de API
Puedes ver y administrar todas las claves de API de tu proyecto en el panel APIs y servicios > Credenciales en la consola de Google Cloud.
También puedes verificar qué clave de API coincide de manera automática con una app de Firebase en los siguientes lugares. De forma predeterminada, todas las apps de Firebase del proyecto de la misma plataforma (Apple o Android, o la Web) usarán la misma clave de API.
Apps de Firebase para Apple: Encuentra la clave de API de coincidencia automática en el archivo de configuración de Firebase,
, en el campoGoogleService-Info.plist API_KEY
.Apps de Firebase para Android: Encuentra la clave de API de coincidencia automática en el archivo de configuración de Firebase,
, en el campogoogle-services.json current_key
.Apps web para Firebase: Encuentra la clave de API de coincidencia automática en el objeto de configuración de Firebase, en el campo
apiKey
.
Uso de claves de API
Las claves de API se usan para identificar tu proyecto de Firebase cuando interactúas con los servicios de Firebase o Google. En particular, se usan para asociar las solicitudes a la API con el proyecto a fin de calcular la cuota y la facturación. También son útiles para acceder a datos públicos.
Por ejemplo, puedes usar de manera explícita una clave de API pasando su valor a una llamada a la API de REST como un parámetro de consulta. En este ejemplo, se muestra cómo realizar una solicitud a la API de abreviación de vínculos de Dynamic Links:
POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY
Cuando la app realice una llamada a una API de Firebase que requiera una clave de API proporcionada por el cliente web o para dispositivos móviles, la app buscará automáticamente en el objeto o archivo de configuración de Firebase la clave de API de tu proyecto. Sin embargo, puedes proporcionar claves de API para tu app con un mecanismo diferente, lo que incluye variables de entorno.
Revisa y aplica las restricciones adecuadas a las claves de API (acción recomendada)
Si bien no es necesario tratar una clave de API para los servicios de Firebase como un Secret, debes revisar y aplicar las restricciones y los límites que se describen en esta sección.
Revisa las APIs que se agregaron automáticamente a la lista de entidades permitidas para tus claves de API de Firebase
Cuando Firebase crea una clave de API en tu proyecto, agrega automáticamente "restricciones de API" a esa clave. Las APIs que se agregan a esta lista de entidades permitidas son APIs relacionadas con Firebase que exigen que el cliente proporcione una clave de API junto con la llamada. Ten en cuenta que la mayoría de las APIs necesarias para usar los servicios de Firebase no necesitan estar en la lista de entidades permitidas de tus claves de API.
Dado que Firebase agrega las APIs necesarias para todos los servicios de Firebase, la lista de entidades permitidas de una clave de API puede incluir APIs de productos que no usas. Puedes quitar APIs de la lista de entidades permitidas, pero debes tener mucho cuidado de no quitar las APIs necesarias para Firebase y los servicios de Firebase que usas (consulta la lista de las APIs relacionadas con Firebase que deben estar en la lista de entidades permitidas para cada servicio o producto). De lo contrario, recibirás errores cuando realices llamadas a los servicios de Firebase.
Reduce la cuota si usas la Authentication con contraseña
Si usas Firebase Authentication con contraseñas y otra persona descubre tu clave de API, no podrá acceder a ninguna de las bases de datos ni a los datos de Cloud Storage de tu proyecto de Firebase, siempre y cuando las Firebase Security Rules protejan esos datos. Sin embargo, la persona podría usar la clave de API para acceder a los extremos de autenticación de Firebase y realizar solicitudes de autenticación en el proyecto.
A fin de reducir las posibilidades de que alguien use inadecuadamente una clave de API
para intentar un ataque de fuerza bruta, puedes reducir la cuota predeterminada de los extremos
identitytoolkit.googleapis.com
con el fin de reflejar las expectativas normales de tráfico de la app. Ten en cuenta que, si reduces la cuota y la app
recibe usuarios de forma repentina, es posible que veas errores de acceso hasta que aumentes la cuota.
Puedes cambiar las cuotas de API del proyecto en la
consola de Google Cloud.
Usa claves de API independientes y restringidas para cualquier servicio que no sea de Firebase
Si bien las claves de API que se usan en los servicios de Firebase por lo general no necesitan tratarse como objetos Secret, debes tomar algunas precauciones adicionales con las claves de API que usas con otras APIs de Google Cloud.
Si usas una API de Google Cloud (en cualquier plataforma) que no sea para un servicio o producto de Firebase, te recomendamos que crees claves de API independientes y restringidas para usarlas con esas APIs. Esto es muy importante si la API es para un servicio facturable de Google Cloud.
Por ejemplo, si usas Firebase ML y las APIs de Cloud Vision en iOS, debes crear claves de API independientes que uses solo para acceder a las APIs de Cloud Vision.
Cuando usas claves de API independientes y restringidas para las API que no son de Firebase, puedes rotar o reemplazar las claves cuando sea necesario y agregar restricciones adicionales a las claves de API sin interrumpir el uso de los servicios de Firebase.
Consulta las instrucciones para crear claves específicas de API
En estas instrucciones, se describe cómo crear una clave de API independiente y restringida para una
API falsa llamada Super Service API
.
Paso 1: Configura tus claves de API existentes para inhabilitar el acceso a Super Service API
Abre la página Credenciales de la consola de Google Cloud. Cuando se te solicite, selecciona tu proyecto.
Para cada clave de API existente en la lista, abre la vista de edición.
En la sección Restricciones de API, selecciona Restringir clave y, luego, agrega a la lista todas las API a las que deseas que tenga acceso la clave de API. Asegúrate de no incluir la API para la que estás creando una clave de API independiente (en este ejemplo,
Super Service API
).Cuando configuras las restricciones de API de una clave de API, declaras en forma explícita las API a las que tiene acceso la clave. De forma predeterminada, cuando la sección Restricciones de API tiene seleccionada la opción No restringir clave, se puede usar una clave de API a fin de acceder a cualquier API que esté habilitada para el proyecto.
Ahora tus claves de API existentes no otorgarán acceso a Super Service API
, pero
cada clave seguirá funcionando para las API que hayas agregado a su
lista Restricciones de API.
Paso 2: Crea y usa una nueva clave de API para acceder a Super Service API
Regresa a la página Credenciales. Asegúrate de que esté seleccionado el proyecto de Firebase.
Haz clic en Crear credenciales > Clave de API. Anota la clave de API nueva y, luego, haz clic en Restringir clave.
En la sección Restricciones de API, selecciona Restringir clave y, luego, agrega a la lista solo la
Super Service API
.Esta nueva clave de API otorga acceso únicamente a
Super Service API
.Configura tu app y tus servicios para usar la clave de API nueva.
Usa claves de API específicas del entorno (acción recomendada)
Si configuras diferentes proyectos de Firebase para entornos distintos, como la etapa de pruebas y la producción, es importante que cada instancia de la app interactúe con su proyecto de Firebase correspondiente. Por ejemplo, la instancia de etapa de pruebas de la app nunca debe comunicarse con el proyecto de producción de Firebase. Esto también significa que la app de etapa de pruebas necesita usar las claves de API asociadas al proyecto de Firebase de etapa de pruebas.
A fin de reducir los problemas que generen cambios de código desde el desarrollo hasta la etapa de pruebas y la producción, en lugar de incluir las claves de API en el código, configúralas como variables de entorno o inclúyelas en un archivo de configuración.
Ten en cuenta que, si usas Firebase Local Emulator Suite para el desarrollo junto con Firebase ML, debes crear y usar una clave de API de solo depuración. Las instrucciones para crear ese tipo de clave se encuentran en los documentos de Firebase ML.
Preguntas frecuentes y solución de problemas
Preguntas frecuentes
¿Están las claves de API de los servicios de Firebase restringidas de forma predeterminada?
Sí, de forma predeterminada, a todas las claves de API que Firebase aprovisiona automáticamente para usar con APIs relacionadas con Firebase se les aplican “restricciones de API” automáticamente. Consulta la lista de las APIs relacionadas con Firebase que se encuentran en esta lista de entidades permitidas.
Las APIs que se agregan a esta lista de entidades permitidas son aquellas a las que llaman los servicios de Firebase desde código de cliente y requieren claves de API para identificar tu proyecto o app de Firebase. Ten en cuenta que la mayoría de las APIs necesarias para usar los servicios de Firebase no necesitan estar en la lista de entidades permitidas para tus claves de API.
Dado que Firebase agrega las APIs necesarias para todos los servicios de Firebase, la lista de entidades permitidas de una clave de API puede incluir APIs de productos que no usas. Puedes quitar APIs de la lista de entidades permitidas, pero debes tener mucho cuidado de no quitar las APIs necesarias para Firebase y los servicios de Firebase que usas (consulta la lista de las APIs relacionadas con Firebase que deben estar en la lista de entidades permitidas para cada servicio o producto). De lo contrario, recibirás errores cuando realices llamadas a los servicios de Firebase.
Puedes ver todas tus claves de API y sus "restricciones de API" en el panel APIs y servicios > Credenciales de la consola de Google Cloud.
Ten en cuenta lo siguiente sobre cómo Firebase aplica estas "restricciones de API":
A partir de mayo de 2024, todas las claves de API nuevas que Firebase aprovisiona automáticamente se limitan de manera automática a la lista de las APIs relacionadas con Firebase.
En mayo de 2024, todas las claves de API existentes y sin restricciones que Firebase había aprovisionado automáticamente antes se restringirán a la lista de las APIs relacionadas con Firebase más cualquiera de las APIs habilitadas actualmente del proyecto.
No se cambiaron las claves de API existentes y ya restringidas que Firebase había aprovisionado automáticamente antes.
No se cambiaron las claves de API existentes que Firebase no aprovisionó automáticamente.
¿Cómo puedo determinar qué clave de API está asociada con mi app de Firebase?
Puedes usar cualquiera de las siguientes opciones para determinar qué clave de API está asociada con tu app de Firebase:
Ve a Configuración del proyecto y desplázate hasta la tarjeta Tus apps.
Selecciona la app que te interesa.
Obtén el objeto o archivo de configuración de Firebase para la app en cuestión y, luego, busca su clave de API:
Apple: Descarga
GoogleService-Info.plist
y, luego, busca el campoAPI_KEY
Android: Descarga
google-services.json
, busca la configuración de la app que te interesa (con el nombre de paquete) y, luego, busca el campocurrent_key
Web: Selecciona la opción Configuración y, luego, busca el campo
apiKey
Para obtener el objeto o archivo de configuración de Firebase de la app que te interesa, ejecuta el siguiente comando:
firebase apps:sdkconfig
PLATFORM FIREBASE_APP_ID - PLATFORM (uno de los siguientes):
IOS
|ANDROID
|WEB
- FIREBASE_APP_ID: El identificador único asignado por Firebase para la app de Firebase (busca el ID de tu app)
- PLATFORM (uno de los siguientes):
En la configuración de Firebase impresa de la app, busca su clave de API:
Apple: Busca el campo
API_KEY
Android: Busca la configuración de la app que te interesa (con su nombre de paquete) y, luego, busca el campo
current_key
Web: Busca el campo
apiKey
Obtén el
apiKeyId
(UID) de la clave de API mediante una llamada al extremo de la app que te interesa y, luego, pasa el valorapiKeyId
al paso siguiente.- Apple: Llama a
projects.iosApps.get
- Android: Llama a
projects.androidApps.get
- Web: Llama a
projects.webApps.get
- Apple: Llama a
Llama a
projects.locations.keys.getKeyString
para obtener la string de clave de API.Este
keyString
es el mismo valor que se puede encontrar en el artefacto de configuración de la app (Apple | Android | Web).
¿Puedo tener dos claves de API para la misma app de Firebase en mi objeto o archivo de configuración de Firebase?
Apps de Firebase para Apple: Cada app tiene su propio archivo de configuración y puede tener solo una clave de API.
Apps de Firebase para Android: Todas las apps para Android en el proyecto de Firebase aparecen en el mismo archivo de configuración y cada app puede tener solo una clave de API. Sin embargo, cada app de este archivo de configuración puede tener una clave diferente.
Apps web para Firebase: Cada app tiene su propio objeto de configuración y puede tener solo una clave de API.
Sin embargo, puedes usar varias claves de API con una sola app. Debes proporcionar un mecanismo para que tu app acceda a estas otras claves de API, por ejemplo, a través de una variable de entorno. El mecanismo para acceder a las otras claves de API no puede depender solo de las claves de API que aparezcan en el objeto o archivo de configuración de Firebase.
¿Cómo sabe Firebase qué clave de API debe coincidir con una app (como en el objeto o archivo de configuración de Firebase)?
La primera vez que obtienes el objeto o archivo de configuración de Firebase de la app, Firebase verifica si hay claves de API existentes en el proyecto que tengan “restricciones de aplicaciones” que coincidan con la app (por ejemplo, un ID de paquete que coincide con la app para Apple).
Si Firebase no encuentra ninguna clave restringida que coincida, mostrará en
el objeto o archivo de configuración iOS key
en las apps para Apple, Android key
en las
apps para Android y Browser key
en las apps web (si estas claves existen
y no tienen restricciones de aplicaciones que eviten que coincidan con esa
app).
¿Puedo borrar de manera manual el campo y la clave de API de mi objeto o archivo de configuración de Firebase?
Sí, puedes borrar de manera manual la clave de API de tu objeto o archivo de configuración. Sin embargo, debes proporcionar otro mecanismo para que la app acceda a una clave de API (como a través de una variable de entorno). De lo contrario, fallarán las llamadas a los servicios de Firebase.
¿Puedo editar de manera manual mi objeto o archivo de configuración de Firebase con diferentes claves de API?
Sí, puedes editar de manera manual un objeto o archivo de configuración para asociar una clave de API diferente con una app.
Ten en cuenta que, si vuelves a obtener el objeto o archivo de configuración de la app desde la consola, aparecerán siempre las claves de API que Firebase hace coincidir de manera automática con la app.. Por lo tanto, deberás volver a realizar ediciones manuales según sea necesario.
¿Puedo mover una clave de API de un proyecto de Firebase a otro?
No, una clave de API solo identifica un proyecto específico y no se puede mover a otro proyecto.
¿Qué sucede si borro una clave de API que aparece en la consola de Google Cloud?
Si borras una clave de API que usa una app, fallarán las llamadas a la API de esa app. Es posible que recibas informes, correos electrónicos o mensajes de error que indiquen que estás intentando usar una clave de API no válida.
Si borras una clave de API, este cambio es permanente y no se puede deshacer.
¿Qué APIs son obligatorias en la lista de entidades permitidas de "restricciones de API" para una clave de API de Firebase?
En el caso de una clave de API de Firebase, las únicas APIs que deben estar en la lista de entidades permitidas de "restricciones de API" de la clave son las que requieren que el cliente proporcione una clave de API junto con la llamada. Ten en cuenta que muy pocas APIs relacionadas con Firebase tienen este requisito. No es necesario que la mayoría de las APIs relacionadas con Firebase habilitadas en tu proyecto estén en la lista de entidades permitidas de "restricciones de API" de la clave.
Usa la siguiente tabla para determinar qué APIs relacionadas con Firebase se deben incluir en la lista de entidades permitidas de "restricciones de API" para una clave de API de Firebase. Recuerda que las claves de API de Firebase solo deben usarse para los servicios de Firebase. Obtén más información para crear claves de API independientes y restringidas para tipos específicos de APIs.
Puedes ver y administrar las claves de API de tu proyecto en el panel APIs y servicios > Credenciales en la consola de Google Cloud.
Nombre de la API (nombre del servicio) | Nombre visible de la API | Servicio o producto de Firebase asociado |
---|---|---|
firebase.googleapis.com | API de Firebase Management | todos los productos |
logging.googleapis.com | API de Cloud Logging | todos los productos |
firebaseinstallations.googleapis.com | API de Firebase Installations | Cloud Messaging, Crashlytics, In-App Messaging, Performance Monitoring, Remote Config, Firebase ML |
firebaseappcheck.googleapis.com | API de Verificación de aplicaciones de Firebase | App Check |
firebaseappdistribution.googleapis.com | API de Firebase App Distribution | App Distribution |
firebaseapptesters.googleapis.com | API de Firebase App Tester | App Distribution |
identitytoolkit.googleapis.com | API de Identity Toolkit | Authentication |
securetoken.googleapis.com | API de Token Service | Authentication |
firebaserules.googleapis.com * | API de reglas de Firebase | Cloud Firestore, Cloud Storage, Realtime Database |
datastore.googleapis.com | API de Cloud Datastore | Cloud Firestore |
firestore.googleapis.com | API de Google Cloud Firestore | Cloud Firestore |
fcmregistrations.googleapis.com | API de FCM Registration | Cloud Messaging |
firebasestorage.googleapis.com | API de Cloud Storage para Firebase | Cloud Storage |
firebasedynamiclinks.googleapis.com | API de Firebase Dynamic Links | Dynamic Links |
firebasehosting.googleapis.com * | API de Firebase Hosting | Hosting |
firebaseinappmessaging.googleapis.com | API de Firebase In-App Messaging | In-App Messaging |
firebaseml.googleapis.com | API de Firebase ML | Firebase ML |
mlkit.googleapis.com ** | API del kit de AA | Firebase ML |
mobilecrashreporting.googleapis.com | Mobile Crash Reporting API | Performance Monitoring |
play.googleapis.com | API de programador de Android para Google Play | Performance Monitoring |
firebaseremoteconfig.googleapis.com | API de Firebase Remote Config | Performance Monitoring, Remote Config |
firebaseremoteconfigrealtime.googleapis.com | API en tiempo real para Firebase Remote Config | Performance Monitoring, Remote Config |
cloudconfig.googleapis.com ** | N/A | Remote Config |
firebasedatabase.googleapis.com * | API de Firebase Realtime Database | Realtime Database |
firebasevertexai.googleapis.com | API de Vertex AI in Firebase | Vertex AI in Firebase |
* Obligatorio solo si usas la clave de API de Firebase con herramientas de terceros o acceso directo de REST al servicio o producto de Firebase.
** Obligatorio para versiones anteriores del SDK del producto. Si usas la versión más reciente del SDK, la API no necesita estar en la lista de entidades permitidas de la clave.
Soluciona problemas
¿Cómo
soluciono un error API_KEY_SERVICE_BLOCKED
o Forbidden 403 que indica
que las solicitudes a esta API están bloqueadas?
Sigue las instrucciones de estas Preguntas frecuentes si recibes un error API_KEY_SERVICE_BLOCKED
o un error similar al siguiente:
Forbidden: 403 POST https://example-service.googleapis.com/method: Requests to this API example-service.googleapis.com method google.example-service.rest.method are blocked.
Es probable que la clave de API que usa tu app para llamar a la API tenga aplicadas "restricciones de API", y la lista de entidades permitidas de la clave no incluya esa API.
Si recibes este error cuando intentas usar un servicio o producto relacionado con Firebase, asegúrate de que la clave de API que usas tenga todas las APIs requeridas incluidas en la lista de entidades permitidas de "restricciones de API" de la clave.
Si recibes este error cuando intentas usar un servicio que no es de Firebase, te recomendamos que crees una clave de API nueva específicamente para ese servicio y esa API. Las claves de API de Firebase solo deben usarse para los servicios o productos de Firebase. Obtén más información para crear claves de API independientes y restringidas para tipos específicos de APIs.
¿Cómo soluciono este error? “No se pudo recuperar el ID de medición de esta app de Firebase desde el servidor”.
Es probable que la clave de API que usa tu aplicación web tenga aplicadas “restricciones de API”. Si este es el caso, asegúrate de que la API de Management de Firebase esté en la lista de API permitidas.
Recibí un correo electrónico o un mensaje de error que indica que mi clave de API no es válida. ¿Qué sucedió y cómo soluciono este problema?
Estas son algunas de las causas más comunes de claves de API no válidas:
La clave de API tiene “restricciones de clave de API” que se aplicaron a ella y hacen que no coincida con la app que intenta usar la clave (“restricciones de la aplicación”) o que no se pueda usar para la API a la que se está llamando (“restricciones de API”).
La clave de API se borró del proyecto en la consola de Google Cloud.
La clave de API no se creó para el ID del proyecto que aparece en el objeto o archivo de configuración de Firebase de la app.
Una forma de solucionar este problema es obtener la versión actualizada del objeto o archivo de configuración de Firebase de la app y, luego, reemplazar el objeto o archivo de configuración anterior por el nuevo. Antes de enviar un archivo de configuración para descargar o mostrar un objeto de configuración en la consola, Firebase verifica que las claves de API que aparecen coincidan con las apps.