Ir para o console

Usuários em projetos do Firebase

O objeto user do Firebase representa uma conta de usuário que fez login em um app no projeto. Normalmente, os apps têm muitos usuários registrados e, em um projeto, todos os apps compartilham um banco de dados de usuários.

As instâncias do usuário são independentes das instâncias do Firebase Authentication. Dessa forma, é possível ter várias referências a diferentes usuários dentro do mesmo contexto e ainda chamar qualquer um dos métodos deles.

Propriedades do usuário

Os usuários do Firebase têm um conjunto fixo de propriedades básicas, um código exclusivo, um endereço de e-mail principal, um nome e um URL de foto, armazenados no banco de dados do usuário do projeto, que podem ser atualizados pelo usuário (iOS, Android, web). Não é possível adicionar outras propriedades diretamente ao objeto "user". Em vez disso, armazene as propriedades adicionais em qualquer outro serviço de armazenamento, como o Google Cloud Firestore.

Quando um usuário se inscreve no seu app, os dados do perfil dele são preenchidos com as informações disponíveis:

  • Se o usuário fez login com um endereço de e-mail e uma senha, somente a propriedade do endereço de e-mail principal será preenchida.
  • Se o usuário fez login com um provedor de identidade federado, como Google ou Facebook, as informações da conta disponibilizadas por esse provedor serão usadas para preencher o perfil dele.
  • Se o usuário fez login com seu sistema personalizado de autenticação, será preciso adicionar explicitamente as informações necessárias ao perfil do usuário.

Após a criação da conta de usuário, você pode atualizar as informações dela para incorporar alterações que o usuário fez em outro dispositivo.

Provedores de login

É possível permitir que usuários façam login nos seus apps do usando vários métodos: endereço de e-mail e senha, provedores de identidade federados e um sistema personalizado de autenticação. Você também pode associar mais de um método de login a um usuário permitindo, por exemplo, que ele faça login na mesma conta usando um endereço de e-mail e uma senha ou o Login do Google.

As instâncias do usuário monitoram todos os provedores vinculados ao usuário. Isso permite que as propriedades em branco do perfil sejam atualizadas com as informações fornecidas por um provedor. Consulte o artigo "Como gerenciar usuários" (iOS, Android e Web).

O usuário atual

Quando um usuário se inscreve ou faz login, ele se torna o usuário atual da instância de autenticação, e ela mantém o estado do usuário. Portanto, a atualização da página em um navegador ou a reinicialização do aplicativo não resultará na perda de informações do usuário.

Quando o usuário sai do aplicativo, a instância do Auth descarta a referência ao objeto User e ao estado dele. Logo, não há usuário atual. No entanto, a instância de usuário continua completamente 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 forma recomendada de rastrear o estado atual da instância de autenticação é usar listeners (também chamados de "observadores" no JavaScript). Eles recebem uma notificação sempre que algo relevante acontece com o objeto Auth. Consulte o artigo "Como gerenciar usuários" (iOS, Android e Web).

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

  • O objeto Auth termina a inicialização, mas o usuário já havia feito 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. Isso pode acontecer nas seguintes condições:
    • O token de acesso expira: essa é uma situação comum. O token de atualização é usado para acessar um novo conjunto válido de tokens.
    • Se o usuário alterar a senha: o Firebase emite novos tokens de acesso e de atualização e faz com que os antigos expirem. Com isso, o token do usuário expira e/ou é desconectado automaticamente de todos os dispositivos por motivos de segurança.
    • O usuário se autentica novamente: algumas ações, como exclusão da conta, configuração de endereço de e-mail principal e alteração da senha, exigem emissão recente das credenciais do usuário. Em vez de desconectar o usuário e fazer o login dele novamente, adquira novas credenciais do usuário e transmita-as para o método de reautenticação do objeto "user".

Tokens de autenticação

Quando a autenticação é feita com o Firebase, três tipos de tokens podem ser encontrados:

Tokens de código do Firebase Criado pelo Firebase quando um usuário se inscreve em um aplicativo. Esses tokens são JSON Web Tokens (JWTs, na sigla em inglês) assinados que identificam um usuário com segurança em um projeto do Firebase. Eles contêm informações básicas do perfil do usuário, incluindo a string de código dele, exclusiva para o projeto do Firebase. Já que a é possível verificar a integridade dos tokens de código, envie-os a um servidor de back-end para identificar o usuário conectado no momento.
Tokens de provedor de identidade Criados por provedores de identidade federados, como Google e Facebook. Eles podem ter formatos diferentes, mas costumam ser tokens de acesso OAuth 2.0. Os apps usam esses tokens para verificar se a autenticação dos usuários com o provedor de identidade foi concluída. Em seguida, eles os convertem em credenciais que podem ser usadas pelos serviços do Firebase.
Tokens personalizados do Firebase São criados pelo seu sistema personalizado de autenticação para permitir que os usuários façam login em um app usando seu sistema de autenticação. Os tokens personalizados são JWTs assinados usando a chave privada de uma conta de serviço. A maneira como os apps utilizam esses tokens é parecida com o uso de tokens retornados dos provedores de identidade federados.