Confira as novidades do Firebase anunciadas no Google I/O 2022. Saiba mais

Gerenciar usuários no Firebase

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

Criar um usuário

Você cria um novo usuário em seu projeto do Firebase de quatro maneiras:

  • Chame o método createUserWithEmailAndPassword() .
  • Faça login em um usuário pela primeira vez usando um provedor de identidade federado , como Login do Google, Login do Facebook ou Apple.

Você também pode criar novos usuários autenticados por senha na seção Autenticação do console do Firebase , na página Usuários.

Obter o perfil de um usuário

Para obter as informações de perfil de um usuário, use as propriedades de User . Existem três maneiras de obter um objeto User representando o usuário atual:

  • Os authStateChanges , idTokenChanges e userChanges : seus ouvintes receberão o User atual ou null se nenhum usuário for autenticado:

    FirebaseAuth.instance
      .authStateChanges()
      .listen((User? user) {
        if (user != null) {
          print(user.uid);
        }
      });
    

    Quando o aplicativo é iniciado, um evento é acionado depois que as credenciais do usuário (se houver) do armazenamento local são restauradas, o que significa que seus ouvintes sempre são chamados quando o estado do usuário é inicializado. Então, sempre que o estado de autenticação mudar, um novo evento será gerado com o estado do usuário atualizado.

    Ao ouvir o estado de autenticação, você pode criar uma interface de usuário que reaja a essas alterações no estado de autenticação.

  • O objeto UserCredential retornado pelos métodos de autenticação ( signIn -): o objeto UserCredential possui uma propriedade user com o User atual:

    final userCredential =
        await FirebaseAuth.instance.signInWithCredential(credential);
    final user = userCredential.user;
    print(user?.uid);
    
  • A propriedade currentUser da instância FirebaseAuth : se você tiver certeza de que o usuário está conectado no momento, poderá acessar o User na propriedade currentUser :

    if (FirebaseAuth.instance.currentUser != null) {
      print(FirebaseAuth.instance.currentUser?.uid);
    }
    

    O currentUser pode ser null por dois motivos:

    • O usuário não está conectado.
    • O objeto de autenticação não concluiu a inicialização. Se você usar um ouvinte para acompanhar o status de entrada do usuário, não precisará lidar com esse caso.

Obter informações de perfil específicas do provedor de um usuário

Para obter as informações de perfil recuperadas dos provedores de entrada vinculados a um usuário, use a propriedade providerData . Por exemplo:

if (user != null) {
    for (final providerProfile in user.providerData) {
        // ID of the provider (google.com, apple.com, etc.)
        final provider = providerProfile.providerId;

        // UID specific to the provider
        final uid = providerProfile.uid;

        // Name, email address, and profile photo URL
        final name = providerProfile.displayName;
        final emailAddress = providerProfile.email;
        final profilePhoto = providerProfile.photoURL;
    }
}

Atualizar o perfil de um usuário

Você pode atualizar as informações básicas do perfil de um usuário — o nome de exibição do usuário e o URL da foto do perfil — com os métodos update -. Por exemplo:

await user?.updateDisplayName("Jane Q. User");
await user?.updatePhotoURL("https://example.com/jane-q-user/profile.jpg");

Definir o endereço de e-mail de um usuário

Você pode definir o endereço de e-mail de um usuário com o método updateEmail() . Por exemplo:

await user?.updateEmail("janeq@example.com");

Enviar a um usuário um e-mail de verificação

Você pode enviar um e-mail de verificação de endereço para um usuário com o método sendEmailVerification() . Por exemplo:

await user?.sendEmailVerification();

Você pode personalizar o modelo de e-mail usado na seção Autenticação do console do Firebase , na página Modelos de e-mail. Consulte Modelos de e-mail na Central de Ajuda do Firebase.

Também é possível passar o estado por meio de um URL de continuação para redirecionar de volta ao aplicativo ao enviar um e-mail de verificação.

Além disso, você pode localizar o e-mail de verificação atualizando o código de idioma na instância Auth antes de enviar o e-mail. Por exemplo:

await FirebaseAuth.instance.setLanguageCode("fr");
await user?.sendEmailVerification();

Definir a senha de um usuário

Você pode definir a senha de um usuário com o método updatePassword() . Por exemplo:

await user?.updatePassword(newPassword);

Enviar um e-mail de redefinição de senha

Você pode enviar um e-mail de redefinição de senha para um usuário com o método sendPasswordResetEmail() . Por exemplo:

await FirebaseAuth.instance
    .sendPasswordResetEmail(email: "user@example.com");

Você pode personalizar o modelo de e-mail usado na seção Autenticação do console do Firebase , na página Modelos de e-mail. Consulte Modelos de e-mail na Central de Ajuda do Firebase.

Também é possível passar o estado por meio de um URL de continuação para redirecionar de volta ao aplicativo ao enviar um e-mail de redefinição de senha.

Além disso, você pode localizar o e-mail de redefinição de senha atualizando o código de idioma na instância Auth antes de enviar o e-mail. Por exemplo:

await FirebaseAuth.instance.setLanguageCode("fr");

Você também pode enviar e-mails de redefinição de senha do Firebase console.

Excluir um usuário

Você pode excluir uma conta de usuário com o método delete() . Por exemplo:

await user?.delete();

Você também pode excluir usuários da seção Autenticação do console do Firebase , na página Usuários.

Reautenticar um usuário

Algumas ações sensíveis à segurança, como excluir uma conta , definir um endereço de e-mail principal e alterar uma senha , exigem que o usuário tenha feito login recentemente. A ação falha e lança uma FirebaseAuthException com o código requires-recent-login . Quando isso acontecer, reautentique o usuário obtendo novas credenciais de entrada do usuário e passando as credenciais para reauthenticate . Por exemplo:

// Prompt the user to re-provide their sign-in credentials.
// Then, use the credentials to reauthenticate:
await user?.reauthenticateWithCredential(credential);

Importar contas de usuário

Você pode importar contas de usuário de um arquivo para seu projeto do Firebase usando o comando auth:import da Firebase CLI. Por exemplo:

firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14