Una clave API es una cadena única que se usa para enrutar solicitudes a su proyecto de Firebase cuando interactúa con los servicios de Firebase y Google. En esta página, se describe información básica sobre las claves de API, así como las prácticas recomendadas para usar y administrar claves de API con aplicaciones de Firebase.
Información general sobre claves API y Firebase
Las claves de API para Firebase son diferentes de las claves de API típicas
A diferencia de cómo se usan normalmente las claves de API, las claves de API para los servicios de Firebase no se usan para controlar el acceso a los recursos de back-end ; eso solo se puede hacer con las reglas de seguridad de Firebase (para controlar qué usuarios pueden acceder a los recursos) y App Check (para controlar qué aplicaciones pueden acceder a los recursos).
Por lo general, debe proteger minuciosamente las claves API (por ejemplo, mediante el uso de un servicio de bóveda o configurando las claves como variables de entorno); sin embargo, las claves de API para los servicios de Firebase se pueden incluir en el código o en los archivos de configuración registrados.
Si bien es seguro incluir claves de API para los servicios de Firebase en el código, hay algunos casos específicos en los que debe aplicar límites para su clave de API; por ejemplo, si usa Firebase ML, Firebase Authentication con el método de inicio de sesión de correo electrónico/contraseña o una API facturable de Google Cloud. Obtenga más información sobre estos casos más adelante en esta página.
Creación de claves API
Un proyecto de Firebase puede tener muchas claves de API, pero cada clave de API solo se puede asociar con un único proyecto de Firebase.
Firebase crea automáticamente claves de API para su proyecto cuando realiza cualquiera de las siguientes acciones:
- Crear un proyecto de Firebase >
Browser key
creada automáticamente - Cree una aplicación Apple de Firebase >
iOS key
creada automáticamente - Crear una aplicación Firebase para Android >
Android key
de Android creada automáticamente
También puede crear sus propias claves de API en Google Cloud Console , por ejemplo, para desarrollo o depuración . Obtenga más información sobre cuándo se podría recomendar esto más adelante en esta página.
Encontrar sus claves API
Puede ver y administrar todas las claves de API de su proyecto en el panel API y servicios > Credenciales en Google Cloud Console.
También puede encontrar qué clave de API se asocia automáticamente con una aplicación de Firebase en los siguientes lugares. De forma predeterminada, todas las aplicaciones de Firebase de su proyecto para la misma plataforma (Apple vs Android vs Web) usarán la misma clave de API.
Firebase Apple Apps : busque la clave API de coincidencia automática de una aplicación en el archivo de configuración de Firebase,
, en el campoGoogleService-Info.plist API_KEY
.Aplicaciones Android de Firebase : busque la clave API de coincidencia automática de una aplicación en el archivo de configuración de Firebase,
, en el campogoogle-services.json current_key
.Firebase Web Apps : busque la clave API de coincidencia automática de una aplicación en el objeto de configuración de Firebase, en el campo
apiKey
.
Uso de una clave API
Las claves API se utilizan para identificar su proyecto de Firebase cuando interactúa con los servicios de Firebase/Google. Específicamente, se usan para asociar solicitudes de API con su proyecto para cuota y facturación. También son útiles para acceder a datos públicos.
Por ejemplo, puede usar explícitamente una clave API pasando su valor a una llamada API REST como parámetro de consulta. Este ejemplo muestra cómo puede realizar una solicitud a la API de acortador de enlaces de Dynamic Links :
POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY
Cuando su aplicación realiza una llamada a una API de Firebase, su aplicación buscará automáticamente en el archivo/objeto de configuración de Firebase la clave de API de su proyecto. Sin embargo, puede configurar sus claves API utilizando un mecanismo diferente, incluidas las variables de entorno.
Aplicar restricciones a las claves API (recomendado)
Si bien no es necesario tratar una clave de API para los servicios de Firebase como un secreto, existen algunos casos específicos (consulte a continuación) en los que es posible que desee tomar medidas adicionales para proteger su proyecto del uso indebido de la clave de API.
Reduzca la cuota si utiliza autenticación basada en contraseña
Si utiliza la autenticación de Firebase basada en contraseña y alguien obtiene su clave de API, no podrá acceder a ninguna base de datos de su proyecto de Firebase ni a los datos de almacenamiento en la nube , siempre que estos datos estén protegidos por las reglas de seguridad de Firebase . Sin embargo, podrían usar su clave API para acceder a los puntos finales de autenticación de Firebase y realizar solicitudes de autenticación en su proyecto.
Para mitigar la posibilidad de que alguien pueda hacer un uso indebido de una clave de API para intentar un ataque de fuerza bruta, puede ajustar la cuota predeterminada de los puntos finales de identitytoolkit.googleapis.com
para reflejar las expectativas de tráfico normales de su aplicación. Tenga en cuenta que si ajusta esta cuota y su aplicación gana usuarios repentinamente, es posible que obtenga errores de inicio de sesión hasta que aumente la cuota. Puede cambiar las cuotas de API de su proyecto en Google Cloud Console .
Use claves de API restringidas separadas para tipos específicos de API
Si bien las claves de API que se usan para los servicios de Firebase generalmente no necesitan tratarse como secretas, debe tomar algunas precauciones adicionales con las claves de API que se usan para otorgar acceso a las API de Google Cloud que habilitó manualmente.
Si usa una API de Google Cloud (en cualquier plataforma) que Firebase no habilite automáticamente (lo que significa que usted mismo la habilitó), debe considerar crear claves de API restringidas separadas para usar con esas API. Esto es particularmente importante si la API es para un servicio facturable de Google Cloud.
Por ejemplo, si usa las API de Cloud Vision de Firebase ML en iOS, debe crear claves de API separadas que use solo para acceder a las API de Cloud Vision.
Al usar claves de API restringidas separadas para las API que no son de Firebase, puede rotar o reemplazar las claves cuando sea necesario y agregar restricciones adicionales a las claves de API sin interrumpir su uso de los servicios de Firebase.
Estas instrucciones describen cómo crear una clave de API restringida separada para una API falsa llamada Super Service API
.
Paso 1: Configure sus claves de API existentes para no permitir el acceso a Super Service API
Abra la página Credenciales de Google Cloud Console. Cuando se le solicite, seleccione su proyecto.
Para cada clave de API existente en la lista, abra la vista de edición.
En la sección Restricciones de API , seleccione Restringir clave y luego agregue a la lista todas las API a las que desea que tenga acceso la clave de API. Asegúrese de no incluir la API para la que está creando una clave de API separada (en este ejemplo,
Super Service API
).Cuando configura las restricciones de API de una clave API , está declarando explícitamente las API a las que tiene acceso la clave. De forma predeterminada, cuando la sección Restricciones de la API tiene seleccionada la opción No restringir clave , se puede usar una clave de API para acceder a cualquier API que esté habilitada para el proyecto.
Ahora, sus claves de API existentes no otorgarán acceso a Super Service API
, pero cada clave seguirá funcionando para cualquier API que haya agregado a su lista de restricciones de API .
Paso 2: Cree y use una nueva clave de API para acceder a Super Service API
Vuelva a la página Credenciales . Asegúrate de que tu proyecto de Firebase aún esté seleccionado.
Haga clic en Crear credenciales > Clave de API . Tome nota de la nueva clave API, luego haga clic en Restringir clave .
En la sección Restricciones de la API , seleccione Restringir clave , luego agregue a la lista solo la
Super Service API
.Esta nueva clave API otorga acceso solo a la
Super Service API
.Configure su aplicación y servicios para usar la nueva clave de API.
Usar claves de API específicas del entorno (recomendado)
Si configura diferentes proyectos de Firebase para diferentes entornos, como ensayo y producción, es importante que cada instancia de la aplicación interactúe con su proyecto de Firebase correspondiente. Por ejemplo, la instancia de su aplicación de prueba nunca debe comunicarse con su proyecto de producción de Firebase. Esto también significa que su aplicación de prueba debe usar claves de API asociadas con su proyecto de prueba de Firebase.
Para reducir los problemas de promoción de cambios de código desde el desarrollo hasta la etapa de producción, en lugar de incluir claves de API en el propio código, configúrelas como variables de entorno o inclúyalas en un archivo de configuración.
Tenga en cuenta que si usa Firebase Local Emulator Suite para el desarrollo junto con Firebase ML, debe crear y usar una clave API de solo depuración. Las instrucciones para crear ese tipo de clave se encuentran en los documentos de Firebase ML .
preguntas frecuentes
Puede usar cualquiera de las siguientes opciones para determinar qué clave API está asociada con su aplicación Firebase:
consola base de fuego
Vaya a proyecto y luego desplácese hacia abajo hasta la tarjeta Sus aplicaciones .
delSeleccione la aplicación de interés.
Obtenga el archivo/objeto de configuración de Firebase para la aplicación de interés y luego busque su clave de API:
Apple : descargue
GoogleService-Info.plist
y luego busque el campoAPI_KEY
Android : descargue
google-services.json
, busque la configuración de la aplicación de interés (busque el nombre del paquete) y luego busque el campocurrent_key
Web : seleccione la opción Config y luego busque el campo
apiKey
CLI de base de fuego
Obtenga el archivo/objeto de configuración de Firebase para la aplicación de interés ejecutando el siguiente comando:
firebase apps:sdkconfig PLATFORM FIREBASE_APP_ID
- PLATFORM (una de):
IOS
|ANDROID
|WEB
- FIREBASE_APP_ID : el identificador único asignado por Firebase para su aplicación Firebase ( busque su ID de aplicación )
- PLATFORM (una de):
En la configuración impresa de Firebase de la aplicación, busque su clave de API:
Apple : busque el campo
API_KEY
Android : busque la configuración de la aplicación de interés (busque el nombre del paquete) y luego busque el campo
current_key
Web : encuentre el campo
apiKey
API REST
Obtenga el
apiKeyId
(el UID) de la clave de API llamando al punto de enlace aplicable para la aplicación de interés y luego pasando el valor deapiKeyId
al siguiente paso.- Apple : Llame
projects.iosApps.get
- Android : Llame
projects.androidApps.get
- Web : Llame
projects.webApps.get
- Apple : Llame
Obtenga la cadena de la clave API llamando a
projects.locations.keys.getKeyString
.Este
keyString
es el mismo valor que se puede encontrar en el artefacto de configuración de la aplicación ( Apple | Android | Web ).
Firebase Apple Apps : cada aplicación tiene su propio archivo de configuración y solo puede tener una clave de API en la lista.
Aplicaciones de Android de Firebase : todas las aplicaciones de Android en el proyecto de Firebase se enumeran en el mismo archivo de configuración, y cada aplicación solo puede tener una clave de API en la lista. Sin embargo, cada aplicación en este archivo de configuración puede tener una clave diferente en la lista.
Firebase Web Apps : cada aplicación tiene su propio objeto de configuración y solo puede tener una clave de API en la lista.
Sin embargo, puede usar varias claves API con una aplicación. Debe proporcionar un mecanismo para que su aplicación acceda a estas otras claves API, como a través de una variable de entorno. El mecanismo para acceder a las otras claves API simplemente no puede depender de que esas claves API se enumeren en su archivo/objeto de configuración de Firebase.
Cuando obtiene por primera vez el archivo/objeto de configuración de Firebase de su aplicación , Firebase verifica si hay claves de API existentes en su proyecto que tengan "Restricciones de la aplicación" que coincidan con la aplicación (por ejemplo, un ID de paquete coincidente para la aplicación de Apple).
Si Firebase no encuentra ninguna clave restringida que coincida, enumerará en el archivo/objeto de configuración la iOS key
para las aplicaciones de Apple, la Android key
de Android para las aplicaciones de Android y la Browser key
para las aplicaciones web (suponiendo que estas claves existan y no tienen "Restricciones de aplicación" que les impidan coincidir con esa aplicación).
Sí, puede eliminar manualmente su clave API de su archivo/objeto de configuración. Sin embargo, debe proporcionar algún otro mecanismo para que su aplicación acceda a una clave API (como a través de una variable de entorno). De lo contrario, cualquier llamada a los servicios de Firebase fallará.
Sí, puede editar manualmente un archivo/objeto de configuración para asociar una clave API diferente con una aplicación.
Tenga en cuenta que si vuelve a obtener el archivo/objeto de configuración de su aplicación desde la consola, siempre mostrará una lista de las claves API que Firebase hace coincidir automáticamente con esa aplicación . Por lo tanto, deberá repetir las ediciones manuales, según sea necesario.
No, una clave API solo identifica un proyecto específico y no se puede mover a otro proyecto.
Estas son algunas de las causas más comunes de claves de API no válidas:
La clave de API tiene aplicadas "Restricciones de clave de API" que la hacen incompatible con la aplicación que intenta usar la clave ("Restricciones de la aplicación") o inutilizable para la API a la que se llama ("Restricciones de API").
La clave de API se eliminó del proyecto en Google Cloud Console.
La clave de API no se creó para el ID de proyecto que figura en el archivo/objeto de configuración de Firebase de la aplicación.
Una forma de solucionar este problema es obtener la versión actualizada del archivo/objeto de configuración de Firebase de su aplicación , luego reemplace su antiguo archivo/objeto de configuración con el nuevo archivo/objeto actualizado. Antes de enviar un archivo de configuración para su descarga o mostrar un objeto de configuración en la consola, Firebase verifica que las claves API enumeradas coincidan con las aplicaciones .
La clave de API utilizada por su aplicación web probablemente tenga aplicadas "Restricciones de API" . Si este es el caso, asegúrese de que Firebase Management API esté en la lista de API permitidas.
Si elimina una clave de API que está en uso por una aplicación, las llamadas a la API desde esa aplicación fallarán. Es posible que reciba informes, correos electrónicos o errores de que está intentando usar una clave de API que no es válida.
La eliminación de una clave API es permanente y no se puede deshacer.