Usuários em projetos do Firebase

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

A instância User do Firebase não depende da instância do Firebase Authentication. Ou seja, pode haver várias referências a diferentes usuários no mesmo contexto, mas ainda assim é possível chamar qualquer um dos métodos.

Propriedades do usuário

Um User do Firebase tem um conjunto fixo de propriedades básicas que ele próprio pode atualizar, incluindo um código exclusivo, um endereço de e-mail primário, um nome e um URL de foto. Esse conjunto é armazenado no banco de dados do usuário do projeto (iOS, Android e Web). Não é possível adicionar outras propriedades diretamente ao objeto User do Firebase. 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 no Firebase.
  • 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 do Firebase.

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.

Uma instância User do Firebase monitora 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 de autenticação 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.
    • Se o usuário faz a autenticação novamente: algumas ações, como exclusão da conta, configuração de endereço de e-mail principal e alteração da senha, exigem a 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.

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.