Una clave API es una cadena única que se utiliza para enrutar solicitudes a su proyecto de Firebase cuando interactúa con los servicios de Firebase y Google. Esta página describe información básica sobre las claves API, así como las mejores prácticas para usar y administrar claves API con aplicaciones de Firebase.
Información general sobre claves API y Firebase
Las claves API para Firebase son diferentes de las claves API típicas
A diferencia de cómo se usan normalmente las claves API, las claves API para los servicios de Firebase no se usan para controlar el acceso a los recursos backend ; 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, es necesario proteger minuciosamente las claves API (por ejemplo, utilizando un servicio de bóveda o configurando las claves como variables de entorno); sin embargo, las claves API para los servicios de Firebase se pueden incluir en el código o en los archivos de configuración registrados.
Aunque es seguro incluir claves API para los servicios de Firebase en el código, existen algunos casos específicos en los que debes imponer límites para tu clave API; por ejemplo, si usa Firebase ML, Firebase Authentication con el método de inicio de sesión por correo electrónico/contraseña o una API de Google Cloud facturable. Obtenga más información sobre estos casos más adelante en esta página.
Creando claves API
Un proyecto de Firebase puede tener muchas claves API, pero cada clave API solo puede asociarse con un único proyecto de Firebase.
Firebase crea automáticamente claves API para tu proyecto cuando realizas cualquiera de las siguientes acciones:
- Crear un proyecto de Firebase >
Browser key
creada automáticamente - Crear una aplicación Firebase Apple >
iOS key
creada automáticamente - Crear una aplicación Firebase para Android >
Android key
creada automáticamente
También puedes crear tus propias claves API en la consola de Google Cloud , por ejemplo para desarrollo o depuración . Obtenga más información sobre cuándo podría recomendarse esto más adelante en esta página.
Encontrar sus claves API
Puedes ver y administrar todas las claves API de tu proyecto en el panel API y servicios > Credenciales en la consola de Google Cloud.
También puede encontrar qué clave API coincide automáticamente con una aplicación Firebase en los siguientes lugares. De forma predeterminada, todas las aplicaciones Firebase de tu proyecto para la misma plataforma (Apple, Android o Web) utilizarán la misma clave 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 de Firebase para Android : 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
.
Usando 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 utilizan para asociar solicitudes de API con su proyecto para cuotas y facturación. También son útiles para acceder a datos públicos.
Por ejemplo, puede utilizar 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 del 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 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)
Aunque no es necesario tratar una clave API para los servicios de Firebase como un secreto, hay algunos casos específicos (ver a continuación) en los que es posible que desees tomar medidas adicionales para proteger tu proyecto del uso indebido de la clave 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 API, no podrá acceder a ninguna base de datos de su proyecto de Firebase ni a los datos de Cloud Storage 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 para su proyecto.
Para mitigar la posibilidad de que alguien pueda hacer un mal uso de una clave 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 normal 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. Puedes cambiar las cuotas de API de tu proyecto en la consola de Google Cloud .
Utilice claves API restringidas e independientes para tipos específicos de API
Aunque generalmente no es necesario tratar las claves API utilizadas para los servicios de Firebase como secretas, debes tomar algunas precauciones adicionales con las claves API utilizadas para otorgar acceso a las API de Google Cloud que has habilitado manualmente.
Si utiliza una API de Google Cloud (en cualquier plataforma) que Firebase no habilita automáticamente (lo que significa que la habilitó usted mismo), debería considerar crear claves de API restringidas e independientes 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 e independientes para 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.
Estas instrucciones describen cómo crear una clave API restringida e independiente para una API falsa llamada Super Service API
.
Paso 1: Configure sus claves API existentes para no permitir el acceso a la Super Service API
Abra la página Credenciales de la consola de Google Cloud. Cuando se le solicite, seleccione su proyecto.
Para cada clave 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 API. Asegúrese de no incluir la API para la que está creando una clave API independiente (en este ejemplo,
Super Service API
).Cuando configuras las restricciones de API de una clave API, estás declarando explícitamente las API a las que tiene acceso la clave. De forma predeterminada, cuando la sección Restricciones de API tiene seleccionada la clave No restringir , se puede usar una clave API para acceder a cualquier API que esté habilitada para el proyecto.
Ahora, sus claves 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 utilice una nueva clave API para acceder a Super Service API
Regrese a la página de Credenciales . Asegúrese de que su proyecto de Firebase todavía esté seleccionado.
Haga clic en Crear credenciales > Clave API . Tome nota de la nueva clave API y luego haga clic en Restringir clave .
En la sección Restricciones de API , seleccione Restringir clave y luego agregue a la lista solo la
Super Service API
.Esta nueva clave API otorga acceso únicamente a la
Super Service API
.Configure su aplicación y servicios para usar la nueva clave API.
Utilice claves API específicas del entorno (recomendado)
Si configuras diferentes proyectos de Firebase para diferentes entornos, como ensayo y producción, es importante que cada instancia de 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 API asociadas con su proyecto de prueba de Firebase.
Para reducir los problemas que promueven cambios de código desde el desarrollo hasta la puesta en escena y la producción, en lugar de incluir claves API en el código mismo, configúrelas como variables de entorno o inclúyalas en un archivo de configuración.
Tenga en cuenta que si utiliza Firebase Local Emulator Suite para el desarrollo junto con Firebase ML, debe crear y utilizar 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 utilizar cualquiera de las siguientes opciones para determinar qué clave API está asociada con su aplicación Firebase:
Consola de base de fuego
Vaya a del proyecto y luego desplácese hacia abajo hasta la tarjeta Sus aplicaciones .
Seleccione la aplicación de su interés.
Obtenga el archivo/objeto de configuración de Firebase para la aplicación de interés y luego busque su clave 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 Configuración 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 el ID de su aplicación )
- PLATFORM (una de):
En la configuración impresa de Firebase de la aplicación, busque su clave 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 : busque el campo
apiKey
API DESCANSO
Obtenga el
apiKeyId
(el UID) de la clave API llamando al punto final aplicable para la aplicación de interés y luego pasando el valorapiKeyId
al siguiente paso.- Apple : llame
projects.iosApps.get
- Android : llame
projects.androidApps.get
- Web : Llamar
projects.webApps.get
- Apple : llame
Obtenga la cadena de clave API llamando a
projects.locations.keys.getKeyString
.Esta
keyString
es el mismo valor que se puede encontrar en el artefacto de configuración de la aplicación ( Apple | Android | Web ).
Aplicaciones Firebase Apple : cada aplicación tiene su propio archivo de configuración y solo puede tener una clave API en la lista.
Aplicaciones de Firebase para Android : todas las aplicaciones de Android en el proyecto Firebase se enumeran en el mismo archivo de configuración y cada aplicación solo puede tener una clave 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 API en la lista.
Sin embargo, puedes utilizar varias claves API con una sola aplicación. Debes proporcionar un mecanismo para que tu 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 aparezcan en su archivo/objeto de configuración de Firebase.
Cuando obtienes por primera vez el archivo/objeto de configuración de Firebase de tu aplicación , Firebase verifica si hay claves API existentes en tu proyecto que tengan "Restricciones de 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 aplicaciones de Apple, la Android key
para aplicaciones de Android y la Browser key
para 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, debes proporcionar algún otro mecanismo para que tu aplicación acceda a una clave API (como a través de una variable de entorno). De lo contrario, se producirá un error en cualquier llamada a los servicios de Firebase.
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 enumerará las claves API que Firebase relaciona 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 API no válidas:
La clave API tiene "Restricciones de clave API" aplicadas que la hacen incomparable con la aplicación que intenta usar la clave ("Restricciones de aplicación") o inutilizable para la API que se llama ("Restricciones de API").
La clave API se eliminó del proyecto en la consola de Google Cloud.
La clave API no se creó para el ID del 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 y luego reemplazar su archivo/objeto de configuración anterior con el nuevo archivo/objeto actualizado. 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 API enumeradas coincidan con las aplicaciones .
La clave API utilizada por su aplicación web probablemente tenga aplicadas "Restricciones de API" . Si este es el caso, asegúrese de que la API de Firebase Management esté en la lista de API permitidas.
Si elimina una clave API que está utilizando una aplicación, las llamadas API desde esa aplicación fallarán. Es posible que reciba informes, correos electrónicos o errores de que está intentando utilizar una clave API que no es válida.
La eliminación de una clave API es permanente y no se puede deshacer.