Autenticar com o Firebase usando contas baseadas em senhas no Android

Use o Firebase Authentication para permitir que os usuários se autentiquem no Firebase usando os respectivos e-mails e senhas e para permitir o gerenciamento das contas do aplicativo baseadas em senha.

Antes de começar

  1. Adicione o Firebase ao projeto do Android.
  2. Adicione a dependência do Firebase Authentication ao arquivo build.gradle do aplicativo:
    implementation 'com.google.firebase:firebase-auth:16.0.3'
  3. Caso você ainda não tenha conectado o app ao projeto do Firebase, faça isso no Firebase console.
  4. Ative o login com e-mail/senha:
    1. No Console do Firebase, abra a seção Autenticação.
    2. Na guia Método de login, ative o login pelo método E-mail/senha e clique em Salvar.

Criar uma conta com base em senha

Para criar uma nova conta de usuário com uma senha, conclua estas etapas na atividade de inscrição do seu aplicativo:

  1. No método onCreate da atividade de login, receba a instância compartilhada do objeto FirebaseAuth:
    private FirebaseAuth mAuth;
    // ...
    mAuth = FirebaseAuth.getInstance();
    
  2. Ao inicializar sua atividade, verifique se o usuário está conectado no momento:
    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        updateUI(currentUser);
    }
    
  3. Quando um novo usuário se inscrever usando o formulário do seu app, conclua as etapas de validação de nova conta exigidas pelo app, como verificar se a senha da nova conta foi digitada corretamente e atende aos requisitos de complexidade.
  4. Crie uma nova conta enviando o endereço de e-mail e a senha do novo usuário para createUserWithEmailAndPassword:
    mAuth.createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        // Sign in success, update UI with the signed-in user's information
                        Log.d(TAG, "createUserWithEmail:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                        updateUI(user);
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "createUserWithEmail:failure", task.getException());
                        Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
    
                    // ...
                }
            });
    
    Se uma nova conta foi criada, isso significa que o usuário fez login. No retorno de chamada, use o método getCurrentUser para coletar os dados da conta do usuário.

Conectar um usuário com endereço de e-mail e senha

As etapas para um usuário fazer login com uma senha são semelhantes às de criação de uma nova conta. Na atividade de login do aplicativo, siga estas etapas:

  1. No método onCreate da atividade de login, encontre a instância compartilhada do objeto FirebaseAuth:
    private FirebaseAuth mAuth;
    // ...
    mAuth = FirebaseAuth.getInstance();
    
  2. Ao inicializar sua atividade, verifique se o usuário está conectado no momento:
    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        updateUI(currentUser);
    }
    
  3. Quando um usuário fizer login no app, envie o endereço de e-mail e a senha dele para signInWithEmailAndPassword:
    mAuth.signInWithEmailAndPassword(email, password)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        // Sign in success, update UI with the signed-in user's information
                        Log.d(TAG, "signInWithEmail:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                        updateUI(user);
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInWithEmail:failure", task.getException());
                        Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
    
                    // ...
                }
            });
    
    Se o login tiver ocorrido com sucesso, você poderá continuar com o FirebaseUser.

Próximas etapas

Depois que um usuário faz login pela primeira vez, uma nova conta é criada e vinculada às credenciais, que podem ser o número do telefone, o nome de usuário e a senha ou as informações do provedor de autenticação. Essa nova conta é armazenada como parte do projeto do Firebase e pode ser usada para identificar um usuário em todos os apps do projeto, seja qual for o método de login utilizado.

  • Nos apps, é possível acessar informações básicas de perfil do usuário por meio do objeto FirebaseUser. Consulte Gerenciar usuários.

  • Nas Regras de segurança do Firebase Realtime Database e do Cloud Storage, é possível usar a variável auth para encontrar o código exclusivo do usuário conectado. Use essa informação para controlar quais dados ele pode acessar.

Os usuários podem fazer login no app usando vários provedores de autenticação. Basta vincular as credenciais desses provedores a uma conta de usuário.

Para desconectar um usuário, chame signOut:

FirebaseAuth.getInstance().signOut();

Enviar comentários sobre…

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