Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Usuários em projetos do Firebase

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

O objeto de usuário do Firebase representa uma conta de usuário que se inscreveu em um aplicativo em seu projeto. Os aplicativos geralmente têm muitos usuários registrados e todos os aplicativos em um projeto compartilham um banco de dados de usuários.

As instâncias de usuário são independentes das instâncias do Firebase Authentication, portanto, você pode ter várias referências a diferentes usuários no mesmo contexto e ainda chamar qualquer um de seus métodos.

Propriedades do usuário

Os usuários do Firebase têm um conjunto fixo de propriedades básicas — um ID exclusivo, um endereço de e-mail principal, um nome e um URL de foto — armazenados no banco de dados de usuários do projeto, que podem ser atualizados pelo usuário ( iOS , Android , web ). Você não pode adicionar outras propriedades ao objeto de usuário diretamente; em vez disso, você pode armazenar as propriedades adicionais em qualquer outro serviço de armazenamento, como o Google Cloud Firestore.

Na primeira vez que um usuário se inscreve no seu aplicativo, os dados do perfil do usuário são preenchidos com as informações disponíveis:

  • Se o usuário se inscreveu com um endereço de e-mail e senha, apenas a propriedade do endereço de e-mail principal será preenchida
  • Se o usuário se inscreveu em um provedor de identidade federado, como Google ou Facebook, as informações da conta disponibilizadas pelo provedor são usadas para preencher o perfil do usuário
  • Se o usuário se inscreveu no seu sistema de autenticação personalizado, você deve adicionar explicitamente as informações desejadas ao perfil do usuário

Após a criação de uma conta de usuário, você pode recarregar as informações do usuário para incorporar quaisquer alterações que o usuário possa ter feito em outro dispositivo.

Provedores de login

Você pode fazer login de usuários em seus aplicativos usando vários métodos: endereço de e-mail e senha, provedores de identidade federados e seu sistema de autenticação personalizado. Você pode associar mais de um método de login a um usuário: por exemplo, um usuário pode fazer login na mesma conta usando um endereço de e-mail e uma senha ou usando o Login do Google.

As instâncias de usuário rastreiam todos os provedores vinculados ao usuário. Isso permite que você atualize as propriedades do perfil vazio usando as informações fornecidas por um provedor. Consulte Gerenciando usuários ( iOS , Android , web ).

O usuário atual

Quando um usuário se inscreve ou entra, esse usuário se torna o usuário atual da instância Auth. A instância mantém o estado do usuário, para que atualizar a página (em um navegador) ou reiniciar o aplicativo não perca as informações do usuário.

Quando o usuário sai, a instância Auth para de manter uma referência ao objeto de usuário e não persiste mais em seu estado; não há usuário atual. No entanto, a instância do usuário continua totalmente funcional: se você mantiver uma referência a ela, ainda poderá acessar e atualizar os dados do usuário.

O ciclo de vida do usuário

A maneira recomendada de rastrear o estado atual da instância Auth é usando ouvintes (também chamados de "observadores" em JavaScript). Um ouvinte Auth é notificado sempre que algo relevante acontece com o objeto Auth. Consulte Gerenciando usuários ( iOS , Android , web ).

Um ouvinte de autenticação é notificado nas seguintes situações:

  • O objeto Auth termina de inicializar e um usuário já fez login em uma sessão anterior ou foi redirecionado do fluxo de login de um provedor de identidade
  • Um usuário faz login (o usuário atual está definido)
  • Um usuário sai (o usuário atual se torna nulo)
  • O token de acesso do usuário atual é atualizado. Este caso pode acontecer nas seguintes condições:
    • O token de acesso expira: esta é uma situação comum. O token de atualização é usado para obter um novo conjunto válido de tokens.
    • O usuário altera a senha: o Firebase emite novos tokens de acesso e atualização e torna os tokens antigos expirados. Isso expira automaticamente o token do usuário e/ou desconecta o usuário em todos os dispositivos, por motivos de segurança.
    • O usuário se autentica novamente: algumas ações exigem que as credenciais do usuário sejam emitidas recentemente; tais ações incluem excluir uma conta, definir um endereço de e-mail principal e alterar uma senha. Em vez de desconectar o usuário e conectar o usuário novamente, obtenha novas credenciais do usuário e passe as novas credenciais para o método de reautenticação do objeto de usuário.

Autoatendimento do usuário

Por padrão, o Firebase permite que os usuários se inscrevam e excluam suas contas sem intervenção administrativa. Em muitas circunstâncias, isso permite que os usuários finais descubram seu aplicativo ou serviço e integrem (ou não) com o mínimo de atrito.

No entanto, há situações em que você deseja que os usuários sejam criados manual ou programaticamente por um administrador, usando o Admin SDK ou o Firebase console. Nesses casos, você pode desativar as ações do usuário na página Configurações do Firebase Authentication , o que impede a criação e a exclusão de contas pelos usuários finais. Se você estiver usando multilocação, precisará fazer uma solicitação HTTP para desabilitar esses recursos por inquilino.

Se um usuário final tentar criar ou excluir uma conta em seu sistema, o serviço Firebase retornará um código de erro: auth/admin-restricted-operation para chamadas de API da Web ou ERROR_ADMIN_RESTRICTED_OPERATION para Android e iOS. Você deve lidar com o erro em seu front-end solicitando que o usuário execute as ações apropriadas para seu serviço.

Tokens de autenticação

Ao realizar a autenticação com o Firebase, existem três tipos de tokens de autenticação que você pode encontrar:

Tokens de código do Firebase Criado pelo Firebase quando um usuário faz login em um aplicativo. Esses tokens são JWTs assinados que identificam com segurança um usuário em um projeto do Firebase. Esses tokens contêm informações básicas de perfil de um usuário, incluindo a string de ID do usuário, que é exclusiva do projeto do Firebase. Como a integridade dos tokens de ID pode ser verificada , você pode enviá-los a um servidor de back-end para identificar o usuário conectado no momento.
Tokens do provedor de identidade Criado por provedores de identidade federados, como Google e Facebook. Esses tokens podem ter formatos diferentes, mas geralmente são tokens de acesso OAuth 2.0. Os aplicativos usam esses tokens para verificar se os usuários foram autenticados com sucesso com o provedor de identidade e os convertem em credenciais que podem ser usadas pelos serviços do Firebase.
Tokens personalizados do Firebase Criado pelo seu sistema de autenticação personalizado para permitir que os usuários façam login em um aplicativo usando seu sistema de autenticação. Tokens personalizados são JWTs assinados usando a chave privada de uma conta de serviço . Os aplicativos usam esses tokens da mesma forma que usam os tokens retornados de provedores de identidade federada.

Endereços de e-mail verificados

O Firebase considera um e-mail verificado se atender a duas condições: 1. O usuário conclui o fluxo de verificação do Firebase 2. O e-mail é verificado por um provedor de identidade confiável, ou IdP.

Os IdPs que verificam e-mails uma vez, mas permitem que os usuários alterem os endereços de e-mail sem exigir uma nova verificação, não são confiáveis. Os IdPs que possuem o domínio ou sempre exigem verificação são considerados confiáveis.

Provedores confiáveis:

  • Google (para endereços @gmail.com)
  • Yahoo (para endereços @yahoo.com)
  • Microsoft (para endereços @outlook.com e @hotmail.com)
  • Apple (sempre verificada, porque as contas são sempre verificadas e autenticadas por vários fatores)

Fornecedores não confiáveis:

  • Facebook
  • Twitter
  • GitHubGenericName
  • Google, Yahoo e Microsoft para domínios não emitidos por esse Provedor de Identidade
  • E-mail / Senha sem verificação de e-mail

Em algumas situações, o Firebase vinculará contas automaticamente quando um usuário fizer login com diferentes provedores usando o mesmo endereço de e-mail. Isso só pode acontecer quando critérios específicos são atendidos, no entanto. Para entender o porquê, considere a seguinte situação: um usuário faz login usando o Google com uma conta @gmail.com e um agente mal-intencionado cria uma conta usando o mesmo endereço @gmail.com, mas entrando pelo Facebook. Se essas duas contas fossem vinculadas automaticamente, o agente mal-intencionado obteria acesso à conta do usuário.

Os casos a seguir descrevem quando vinculamos contas automaticamente e quando geramos um erro que exige ação do usuário ou do desenvolvedor:

  • O usuário entra com um provedor não confiável e, em seguida, entra com outro provedor não confiável com o mesmo email (por exemplo, Facebook seguido por GitHub). Isso gera um erro que exige a vinculação da conta.
  • O usuário entra com um provedor confiável e, em seguida, entra com um provedor não confiável com o mesmo e-mail (por exemplo, Google seguido pelo Facebook). Isso gera um erro que exige a vinculação da conta.
  • O usuário entra com um provedor não confiável e, em seguida, entra com um provedor confiável com o mesmo e-mail (por exemplo, Facebook seguido pelo Google). O provedor confiável substitui o provedor não confiável. Se o usuário tentar fazer login novamente com o Facebook, ocorrerá um erro exigindo a vinculação da conta.
  • O usuário faz login com um provedor confiável e, em seguida, faz login com um provedor confiável diferente com o mesmo e-mail (por exemplo, Apple seguido pelo Google). Ambos os provedores serão vinculados sem erros.

Você pode definir manualmente um e-mail como verificado usando o SDK Admin, mas recomendamos fazer isso apenas se você souber que o usuário realmente é o proprietário do e-mail.