O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Primeiros passos com o Firebase Authentication no Android

Conectar seu app ao Firebase

Adicione o Firebase ao seu projeto para Android, caso ainda não tenha feito isso.

Adicionar o Firebase Authentication ao seu app

Usando a BoM do Firebase para Android, declare a dependência da biblioteca Android do Firebase Authentication no seu arquivo do Gradle (nível do app) do módulo, que geralmente é app/build.gradle.

Java

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:28.2.1')

    // Declare the dependency for the Firebase Authentication library
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-auth'
}

Ao usar a BoM do Firebase para Android, seu app sempre usará versões compatíveis das bibliotecas do Firebase para Android.

(Alternativa) Declare as dependências da biblioteca do Firebase sem usar a BoM.

Se você preferir não usar a BoM do Firebase, especifique cada versão da biblioteca do Firebase na linha de dependência correspondente.

Caso você use várias bibliotecas do Firebase no seu app, recomendamos usar a BoM para gerenciar versões de bibliotecas, o que garante a compatibilidade de todas as versões.

dependencies {
    // Declare the dependency for the Firebase Authentication library
    // When NOT using the BoM, you must specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-auth:21.0.1'
}

Kotlin+KTX

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:28.2.1')

    // Declare the dependency for the Firebase Authentication library
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-auth-ktx'
}

Ao usar a BoM do Firebase para Android, seu app sempre usará versões compatíveis das bibliotecas do Firebase para Android.

(Alternativa) Declare as dependências da biblioteca do Firebase sem usar a BoM.

Se você preferir não usar a BoM do Firebase, especifique cada versão da biblioteca do Firebase na linha de dependência correspondente.

Caso você use várias bibliotecas do Firebase no seu app, recomendamos optar pela BoM para gerenciar versões de bibliotecas, o que garante a compatibilidade de todas as versões..

dependencies {
    // Declare the dependency for the Firebase Authentication library
    // When NOT using the BoM, you must specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-auth-ktx:21.0.1'
}

Para usar um provedor de autenticação, é necessário ativá-lo no Console do Firebase. Acesse a página "Método de login" na seção "Firebase Authentication" para ativar o login com e-mail/senha e outros provedores de identidade que você quer no seu app.

Criar protótipos e fazer testes com o Pacote do emulador local do Firebase (opcional)

Antes de ver informações sobre como seu app autentica os usuários, confira o Pacote do emulador local do Firebase, um conjunto de ferramentas que podem ser usadas para criar protótipos e testar a funcionalidade do Authentication. Conseguir trabalhar localmente sem precisar implantar serviços existentes será uma ótima ideia se você estiver decidindo entre técnicas e provedores de autenticação, testando modelos de dados diferentes com dados públicos e particulares usando as regras de segurança do Firebase e do Authentication ou criando protótipos de designs de IU de login.

Um emulador do Authentication faz parte do Pacote do emulador local, que permite ao seu app interagir com o conteúdo e a configuração do banco de dados emulado. Além disso, ele também permite interagir com os recursos do projeto emulado (opcional), como funções, outros bancos de dados e regras de segurança.

O uso do emulador do Authentication envolve apenas alguns passos:

  1. Para se conectar ao emulador, adicione uma linha de código à configuração de teste do app.
  2. Execute firebase emulators:start na raiz do diretório do projeto local.
  3. Use a IU do Pacote do emulador local para fazer uma prototipagem interativa ou use a API REST do emulador do Authentication para fazer testes não interativos.

Veja um guia detalhado em Conecte seu aplicativo ao emulador de autenticação. Para mais informações, consulte Introdução ao conjunto de emuladores locais do Firebase.

Agora veremos como autenticar os usuários.

Verificar o estado atual da autenticação

  1. Declare uma instância de FirebaseAuth.

    Java

    private FirebaseAuth mAuth;

    Kotlin+KTX

    private lateinit var auth: FirebaseAuth
  2. No método onCreate(), inicialize a instância FirebaseAuth.

    Java

    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();

    Kotlin+KTX

    // Initialize Firebase Auth
    auth = Firebase.auth
  3. Ao inicializar sua atividade, verifique se o usuário está conectado no momento.

    Java

    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        if(currentUser != null){
            reload();
        }
    }

    Kotlin+KTX

    public override fun onStart() {
        super.onStart()
        // Check if user is signed in (non-null) and update UI accordingly.
        val currentUser = auth.currentUser
        if(currentUser != null){
            reload();
        }
    }

Login de novos usuários

Crie um novo método createAccount que inclua um endereço de e-mail e uma senha, valide esses dois elementos e crie um novo usuário com o método createUserWithEmailAndPassword.

Java

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);
                }
            }
        });

Kotlin+KTX

auth.createUserWithEmailAndPassword(email, password)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                // Sign in success, update UI with the signed-in user's information
                Log.d(TAG, "createUserWithEmail:success")
                val user = auth.currentUser
                updateUI(user)
            } else {
                // If sign in fails, display a message to the user.
                Log.w(TAG, "createUserWithEmail:failure", task.exception)
                Toast.makeText(baseContext, "Authentication failed.",
                        Toast.LENGTH_SHORT).show()
                updateUI(null)
            }
        }

Adicione um formulário para registrar novos usuários com o e-mail e a senha deles, além de chamar esse método quando o documento for enviado. Veja um exemplo na nossa amostra do guia de início rápido.

Login de usuários existentes

Crie um novo método signIn que inclua um endereço de e-mail e senha, valide esses dois elementos e, em seguida, faça login de um usuário com o método signInWithEmailAndPassword.

Java

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);
                }
            }
        });

Kotlin+KTX

auth.signInWithEmailAndPassword(email, password)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                // Sign in success, update UI with the signed-in user's information
                Log.d(TAG, "signInWithEmail:success")
                val user = auth.currentUser
                updateUI(user)
            } else {
                // If sign in fails, display a message to the user.
                Log.w(TAG, "signInWithEmail:failure", task.exception)
                Toast.makeText(baseContext, "Authentication failed.",
                        Toast.LENGTH_SHORT).show()
                updateUI(null)
            }
        }

Adicione um formulário para fazer login dos usuários com e-mail e senha, além de chamar esse método quando o documento for enviado. Veja um exemplo na nossa amostra do guia de início rápido.

Acessar as informações do usuário

Se um usuário tiver feito login com sucesso, você poderá obter os dados da conta dele a qualquer momento com o método getCurrentUser.

Java

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    // Name, email address, and profile photo Url
    String name = user.getDisplayName();
    String email = user.getEmail();
    Uri photoUrl = user.getPhotoUrl();

    // Check if user's email is verified
    boolean emailVerified = user.isEmailVerified();

    // The user's ID, unique to the Firebase project. Do NOT use this value to
    // authenticate with your backend server, if you have one. Use
    // FirebaseUser.getIdToken() instead.
    String uid = user.getUid();
}

Kotlin+KTX

val user = Firebase.auth.currentUser
user?.let {
    // Name, email address, and profile photo Url
    val name = user.displayName
    val email = user.email
    val photoUrl = user.photoUrl

    // Check if user's email is verified
    val emailVerified = user.isEmailVerified

    // The user's ID, unique to the Firebase project. Do NOT use this value to
    // authenticate with your backend server, if you have one. Use
    // FirebaseUser.getToken() instead.
    val uid = user.uid
}

Próximas etapas

Explore os guias sobre como adicionar outros serviços de identidade e autenticação: