Gerenciar usuários no Firebase

Crie 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 de um usuário pela primeira vez usando um provedor de identidade federado , como Google Sign-In, Facebook Login 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.

Obtenha o perfil de um usuário

Para obter 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 fluxos 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 após as credenciais do usuário (se houver) do armazenamento local terem sido restauradas, o que significa que seus ouvintes sempre serão chamados quando o estado do usuário for 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 construir uma interface de usuário que reaja a essas mudanças 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 tiver certeza de que o usuário está conectado no momento, você pode 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.

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

Para obter as informações de perfil recuperadas dos provedores de login 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 um e-mail de verificação a um usuário

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 uma 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 do idioma na instância Auth antes de enviar o e-mail. Por exemplo:

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

Definir uma senha de usuário

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

await user?.updatePassword(newPassword);

Envie 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 uma 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 do 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 console do Firebase.

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. Se você realizar uma dessas ações e o usuário tiver feito login há muito tempo, o action falha e lança uma FirebaseAuthException com o código requires-recent-login . Quando isso acontecer, autentique novamente o usuário obtendo novas credenciais de login do usuário e passando-as 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 CLI do Firebase. Por exemplo:

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