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 de 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 Firebase Security Rules (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 cofre 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 as chaves de API para serviços do Firebase sejam seguras para incluir 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 do Google Cloud faturável. Saiba mais sobre esses casos mais adiante nesta página.
Como criar 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ê faz o seguinte:
- Criar um projeto do Firebase >
Browser key
criada automaticamente - Criar um aplicativo Apple Firebase >
iOS key
criada automaticamente - Criar um aplicativo para Android do Firebase >
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 encontrar qual chave de API corresponde automaticamente a um aplicativo do Firebase nos locais a seguir. Por padrão, todos os aplicativos do Firebase do seu projeto para a mesma plataforma (Apple x Android x 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 Android do Firebase — 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 um parâmetro de consulta. Este exemplo mostra como você pode fazer uma solicitação para a API do encurtador de links de links dinâmicos :
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 um segredo, há alguns casos específicos (veja abaixo) em que você pode querer tomar medidas adicionais para proteger seu projeto do uso indevido da chave de API.
Reduza a cota se você usar autenticação baseada em senha
Se você usar o Firebase Authentication com base 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 sejam protegidos pelas regras de segurança do Firebase . No entanto, eles podem 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 reduzir 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 de repente, 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 separadas e restritas 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 algumas precauções 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 seja ativada automaticamente pelo Firebase (ou seja, você mesmo a ativou), considere criar chaves de API separadas e restritas para uso com essas APIs. Isso é particularmente importante se a API for para um serviço faturável do Google Cloud.
Por exemplo, se você usa as APIs do Cloud Vision do Firebase ML no iOS, deve criar chaves de API separadas que você usa apenas para acessar as APIs do Cloud Vision.
Ao usar chaves de API separadas e restritas 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 separada e restrita para uma API falsa chamada Super Service API
.
Etapa 1: configurar suas chaves de API existentes para impedir 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 de 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 de restrições de API tem a opção Não restringir chave selecionada, uma chave de API pode ser usada para acessar qualquer API habilitada para o projeto.
Agora, suas chaves de API existentes não concederão acesso à Super Service API
, mas cada chave continuará funcionando para todas as APIs que você adicionou à lista de restrições de API .
Etapa 2: criar e usar 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 de restrições da API , selecione Restringir chave e adicione à lista apenas a
Super Service API
.Essa 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 ambientes diferentes, como preparação e produção, é importante que cada instância do aplicativo interaja com o projeto correspondente do Firebase. Por exemplo, sua instância do 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 os problemas de promoção de alterações de código do desenvolvimento à preparação para a produção, em vez de incluir as 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 de depuração. As instruções para criar esse tipo de chave são encontradas nos documentos do Firebase ML .
Perguntas frequentes
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, o que a torna 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 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, verifique se a API Firebase Management está na lista de APIs permitidas.
Não, uma chave de API identifica apenas um projeto específico e não pode ser movida para outro projeto.
Quando você obtém o arquivo/objeto de configuração do Firebase do seu aplicativo pela primeira vez, o Firebase verifica se há alguma chave de API existente em 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 que corresponda, ele listará no arquivo/objeto de configuração a iOS key
para aplicativos da Apple, a Android key
do Android para aplicativos Android e a Browser key
para aplicativos da Web (supondo que essas chaves existam e não têm "Restrições de Aplicativos" que os impeçam de corresponder a esse aplicativo).
Sim, você pode excluir manualmente sua chave de API do arquivo/objeto de configuração. No entanto, você deve fornecer algum outro mecanismo para seu aplicativo acessar 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 suas edições manuais, conforme necessário.
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 da listagem dessas chaves de API no arquivo/objeto de configuração do Firebase.
Se você excluir uma chave de API que está sendo usada por um aplicativo, as chamadas de API desse aplicativo falharão. Você pode receber relatórios, e-mails ou erros ao tentar usar uma chave de API inválida.
A exclusão de uma chave de API é permanente e não pode ser desfeita.