Obtén más información para usar y administrar las claves de API para Firebase
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.
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, GoogleService-Info.plist, en el
campo API_KEY.
Apps de Firebase para Android: Encuentra la clave de API de coincidencia automática en el
archivo de configuración de Firebase, google-services.json, en el
campo 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 Firebasemá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:
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 campo
API_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 campo current_key
Web: Selecciona la opción Configuración y, luego, busca el campo apiKey
Firebase CLI
Para obtener el objeto o archivo de configuración de Firebase de la app que te interesa, ejecuta
el siguiente comando:
firebase apps:sdkconfig PLATFORMFIREBASE_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)
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
API de REST
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 valor
apiKeyId al paso siguiente.
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)?
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.
¿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.
* 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 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.