Uma chave de API é uma string exclusiva usada para rotear solicitações para seu projeto do Firebase ao interagir com o Firebase e os serviços do Google. Esta página descreve informações básicas sobre chaves de API, bem como práticas recomendadas para usar e gerenciar chaves de API com aplicativos do Firebase.
Informações gerais sobre chaves de API e Firebase
As chaves de API do Firebase são diferentes das chaves de API típicas
Ao contrário do modo como as chaves de API são normalmente usadas, as chaves de API para serviços do Firebase não são usadas para controlar o acesso a recursos de back-end ; isso só pode ser feito com regras de segurança do Firebase (para controlar quais usuários podem acessar recursos) e App Check (para controlar quais aplicativos podem acessar recursos).
Normalmente, você precisa proteger cuidadosamente as chaves de API (por exemplo, usando um serviço de vault ou definindo as chaves como variáveis de ambiente); no entanto, as chaves de API para serviços do Firebase podem ser incluídas no código ou nos arquivos de configuração com check-in.
Embora seja seguro incluir chaves de API para serviços do Firebase no código, há alguns casos específicos em que você deve impor limites para sua chave de API; por exemplo, se você estiver usando o Firebase ML, o Firebase Authentication com o método de login por e-mail/senha ou uma API faturável do Google Cloud. Saiba mais sobre esses casos posteriormente nesta página.
Criando chaves de API
Um projeto do Firebase pode ter muitas chaves de API, mas cada chave de API só pode ser associada a um único projeto do Firebase.
O Firebase cria automaticamente chaves de API para seu projeto quando você executa uma das seguintes ações:
- Crie um projeto do Firebase >
Browser key
criada automaticamente - Crie um aplicativo Firebase Apple>
iOS key
criada automaticamente - Crie um aplicativo Firebase para Android >
Android key
criada automaticamente
Você também pode criar suas próprias chaves de API no console do Google Cloud , por exemplo, para desenvolvimento ou depuração . Saiba mais sobre quando isso pode ser recomendado posteriormente nesta página.
Encontrando suas chaves de API
Você pode visualizar e gerenciar todas as chaves de API do seu projeto no painel APIs e serviços > Credenciais no console do Google Cloud.
Você também pode descobrir qual chave de API corresponde automaticamente a um aplicativo do Firebase nos seguintes locais. Por padrão, todos os aplicativos Firebase do seu projeto para a mesma plataforma (Apple, Android ou Web) usarão a mesma chave de API.
Firebase Apple Apps – Encontre a chave de API de correspondência automática de um aplicativo no arquivo de configuração do Firebase,
, no campoGoogleService-Info.plist API_KEY
.Aplicativos Firebase para Android : encontre a chave de API de correspondência automática de um aplicativo no arquivo de configuração do Firebase,
, no campogoogle-services.json current_key
.Firebase Web Apps – Encontre a chave de API de correspondência automática de um aplicativo no objeto de configuração do Firebase, no campo
apiKey
.
Usando uma chave de API
As chaves de API são usadas para identificar seu projeto do Firebase ao interagir com os serviços do Firebase/Google. Especificamente, eles são usados para associar solicitações de API ao seu projeto para cota e faturamento. Eles também são úteis para acessar dados públicos.
Por exemplo, você pode usar explicitamente uma chave de API passando seu valor para uma chamada de API REST como parâmetro de consulta. Este exemplo mostra como você pode fazer uma solicitação à API do encurtador de links do Dynamic Links :
POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY
Quando seu aplicativo faz uma chamada para uma API do Firebase, ele procura automaticamente no arquivo/objeto de configuração do Firebase a chave de API do seu projeto. No entanto, você pode definir suas chaves de API usando um mecanismo diferente, incluindo variáveis de ambiente.
Aplicar restrições às chaves de API (recomendado)
Embora não seja necessário tratar uma chave de API para serviços do Firebase como secreta, há alguns casos específicos (veja abaixo) em que você pode querer tomar medidas adicionais para proteger seu projeto contra o uso indevido da chave de API.
Reduza a cota se você usar autenticação baseada em senha
Se você usar o Firebase Authentication baseado em senha e alguém obtiver sua chave de API, essa pessoa não poderá acessar nenhum banco de dados do seu projeto do Firebase ou dados do Cloud Storage , desde que esses dados estejam protegidos pelas regras de segurança do Firebase . No entanto, eles poderiam usar sua chave de API para acessar os endpoints de autenticação do Firebase e fazer solicitações de autenticação em seu projeto.
Para mitigar a possibilidade de alguém usar indevidamente uma chave de API para tentar um ataque de força bruta, você pode restringir a cota padrão dos endpoints identitytoolkit.googleapis.com
para refletir as expectativas normais de tráfego do seu aplicativo. Esteja ciente de que se você restringir essa cota e seu aplicativo ganhar usuários repentinamente, você poderá receber erros de login até aumentar a cota. Você pode alterar as cotas de API do seu projeto no console do Google Cloud .
Use chaves de API restritas e separadas para tipos específicos de APIs
Embora as chaves de API usadas para serviços do Firebase geralmente não precisem ser tratadas como secretas, você deve tomar alguns cuidados extras com as chaves de API usadas para conceder acesso às APIs do Google Cloud que você ativou manualmente.
Se você usa uma API do Google Cloud (em qualquer plataforma) que não é ativada automaticamente pelo Firebase (ou seja, você mesmo a ativou), considere criar chaves de API restritas e separadas para uso com essas APIs. Isso é especialmente importante se a API for para um serviço faturável do Google Cloud.
Por exemplo, se você usar APIs Cloud Vision do Firebase ML no iOS, deverá criar chaves de API separadas que serão usadas apenas para acessar as APIs Cloud Vision.
Ao usar chaves de API restritas e separadas para APIs que não são do Firebase, você pode alternar ou substituir as chaves quando necessário e adicionar restrições adicionais às chaves de API sem interromper o uso dos serviços do Firebase.
Estas instruções descrevem como criar uma chave de API restrita e separada para uma API falsa chamada Super Service API
.
Etapa 1: configure suas chaves de API existentes para proibir o acesso à Super Service API
Abra a página Credenciais do console do Google Cloud. Quando solicitado, selecione seu projeto.
Para cada chave de API existente na lista, abra a visualização de edição.
Na seção Restrições de API , selecione Restringir chave e adicione à lista todas as APIs às quais você deseja que a chave de API tenha acesso. Certifique-se de não incluir a API para a qual você está criando uma chave de API separada (neste exemplo,
Super Service API
).Ao configurar as restrições de API de uma chave de API, você declara explicitamente as APIs às quais a chave tem acesso. Por padrão, quando a seção Restrições de API tiver a opção Não restringir chave selecionada, uma chave de API poderá ser usada para acessar qualquer API que esteja habilitada para o projeto.
Agora, suas chaves de API existentes não concederão acesso à Super Service API
, mas cada chave continuará funcionando para quaisquer APIs que você adicionou à lista de restrições de API .
Etapa 2: crie e use uma nova chave de API para acessar a Super Service API
Retorne à página Credenciais . Certifique-se de que seu projeto do Firebase ainda esteja selecionado.
Clique em Criar credenciais > Chave de API . Anote a nova chave de API e clique em Restringir chave .
Na seção Restrições de API , selecione Restringir chave e adicione à lista apenas a
Super Service API
.Esta nova chave de API concede acesso apenas à
Super Service API
.Configure seu aplicativo e serviços para usar a nova chave de API.
Use chaves de API específicas do ambiente (recomendado)
Se você configurar diferentes projetos do Firebase para diferentes ambientes, como preparação e produção, é importante que cada instância do aplicativo interaja com o projeto correspondente do Firebase. Por exemplo, a instância do seu aplicativo de teste nunca deve se comunicar com seu projeto de produção do Firebase. Isso também significa que seu aplicativo de teste precisa usar chaves de API associadas ao seu projeto de teste do Firebase.
Para reduzir problemas ao promover alterações de código desde o desenvolvimento até a preparação e a produção, em vez de incluir chaves de API no próprio código, defina-as como variáveis de ambiente ou inclua-as em um arquivo de configuração.
Observe que se você estiver usando o Firebase Local Emulator Suite para desenvolvimento junto com o Firebase ML, deverá criar e usar uma chave de API somente para depuração. As instruções para criar esse tipo de chave são encontradas nos documentos do Firebase ML .
Perguntas frequentes
Você pode usar qualquer uma das seguintes opções para determinar qual chave de API está associada ao seu aplicativo Firebase:
Console do Firebase
Vá para Configurações do projeto e role para baixo até o cartão Seus aplicativos .
Selecione o aplicativo de seu interesse.
Obtenha o arquivo/objeto de configuração do Firebase para o aplicativo de interesse e encontre sua chave de API:
Apple : Baixe
GoogleService-Info.plist
e encontre o campoAPI_KEY
Android : baixe
google-services.json
, encontre a configuração do aplicativo de interesse (procure o nome do pacote) e encontre o campocurrent_key
Web : selecione a opção Config e encontre o campo
apiKey
CLI do Firebase
Obtenha o arquivo/objeto de configuração do Firebase para o aplicativo de interesse executando o seguinte comando:
firebase apps:sdkconfig PLATFORM FIREBASE_APP_ID
- PLATFORM (uma das):
IOS
|ANDROID
|WEB
- FIREBASE_APP_ID : o identificador exclusivo atribuído pelo Firebase para seu aplicativo Firebase ( encontre o ID do seu aplicativo )
- PLATFORM (uma das):
Na configuração impressa do Firebase do aplicativo, encontre sua chave de API:
Apple : Encontre o campo
API_KEY
Android : encontre a configuração do aplicativo de interesse (procure o nome do pacote) e, em seguida, encontre o campo
current_key
Web : Encontre o campo
apiKey
API REST
Obtenha o
apiKeyId
(o UID) da chave de API chamando o endpoint aplicável para o aplicativo de interesse e, em seguida, transmitindo o valorapiKeyId
para a próxima etapa.- Apple : ligue para
projects.iosApps.get
- Android : Chame
projects.androidApps.get
- Web : Chame
projects.webApps.get
- Apple : ligue para
Obtenha a sequência da chave de API chamando
projects.locations.keys.getKeyString
.Este
keyString
é o mesmo valor que pode ser encontrado no artefato de configuração do App ( Apple | Android | Web ).
Firebase Apple Apps – Cada aplicativo tem seu próprio arquivo de configuração e pode ter apenas uma chave de API listada.
Aplicativos Android do Firebase – todos os aplicativos Android no projeto Firebase são listados no mesmo arquivo de configuração e cada aplicativo pode ter apenas uma chave de API listada. Cada aplicativo neste arquivo de configuração pode ter uma chave diferente listada.
Firebase Web Apps – cada aplicativo tem seu próprio objeto de configuração e pode ter apenas uma chave de API listada.
No entanto, você pode usar várias chaves de API com um aplicativo. Você deve fornecer um mecanismo para seu aplicativo acessar essas outras chaves de API, como por meio de uma variável de ambiente. O mecanismo para acessar as outras chaves de API simplesmente não pode depender dessas chaves de API listadas em seu arquivo/objeto de configuração do Firebase.
Quando você obtém pela primeira vez o arquivo/objeto de configuração do Firebase do seu aplicativo , o Firebase verifica se há alguma chave de API existente no seu projeto que tenha "Restrições de aplicativo" que correspondam ao aplicativo (por exemplo, um ID de pacote correspondente para o aplicativo da Apple).
Se o Firebase não encontrar nenhuma chave restrita correspondente, ele listará no arquivo/objeto de configuração a iOS key
para aplicativos da Apple, a Android key
para aplicativos Android e a Browser key
para aplicativos da web (supondo que essas chaves existam e não têm "restrições de aplicativo" que os impeçam de corresponder a esse aplicativo).
Sim, você pode excluir manualmente sua chave de API de seu arquivo/objeto de configuração. No entanto, você deve fornecer algum outro mecanismo para que seu aplicativo acesse uma chave de API (como por meio de uma variável de ambiente). Caso contrário, todas as chamadas para os serviços do Firebase falharão.
Sim, você pode editar manualmente um arquivo/objeto de configuração para associar uma chave de API diferente a um aplicativo.
Observe que se você obtiver novamente o arquivo/objeto de configuração do seu aplicativo no console, ele sempre listará as chaves de API que o Firebase corresponde automaticamente a esse aplicativo . Portanto, você precisará repetir as edições manuais, conforme necessário.
Não, uma chave de API identifica apenas um projeto específico e não pode ser movida para outro projeto.
Aqui estão algumas das causas mais comuns para chaves de API inválidas:
A chave de API tem "Restrições de chave de API" aplicadas a ela que a tornam incompatível com o aplicativo que tenta usar a chave ("Restrições de aplicativo") ou inutilizável para a API que está sendo chamada ("Restrições de API").
A chave de API foi excluída do projeto no console do Google Cloud.
A chave de API não foi criada para o ID do projeto listado no arquivo/objeto de configuração do Firebase do aplicativo.
Uma maneira de corrigir esse problema é obter a versão atualizada do arquivo/objeto de configuração do Firebase do seu aplicativo e , em seguida, substituir o arquivo/objeto de configuração antigo pelo novo arquivo/objeto atualizado. Antes de enviar um arquivo de configuração para download ou exibir um objeto de configuração no console, o Firebase verifica se as chaves de API listadas correspondem aos aplicativos .
A chave de API usada pelo seu aplicativo da web provavelmente tem "Restrições de API" aplicadas a ela. Se for esse o caso, certifique-se de que a API Firebase Management esteja na lista de APIs permitidas.
Se você excluir uma chave de API que está em uso por um aplicativo, as chamadas de API desse aplicativo falharão. Você pode receber relatórios, e-mails ou erros informando que está tentando usar uma chave de API inválida.
A exclusão de uma chave de API é permanente e não pode ser desfeita.