Primeiros passos com a autenticação Firebase no Android

Conecte seu aplicativo ao Firebase

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

Adicione o Firebase Authentication ao seu aplicativo

  1. No arquivo Gradle do módulo (nível do aplicativo) (geralmente <project>/<app-module>/build.gradle.kts ou <project>/<app-module>/build.gradle ), adicione a dependência para o Firebase Authentication biblioteca para Android. Recomendamos usar o Firebase Android BoM para controlar o controle de versão da biblioteca.

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


       
    // Add 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 o Firebase Android BoM , seu aplicativo sempre usará versões compatíveis das bibliotecas do Firebase Android.

    Se você optar por não usar o Firebase BoM, deverá especificar cada versão da biblioteca do Firebase em sua linha de dependência.

    Observe que se você usa várias bibliotecas do Firebase no seu aplicativo, é altamente recomendável usar a BoM para gerenciar as versões da biblioteca, o que garante que todas as versões sejam compatíveis.

    dependencies {
       
    // Add 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:22.3.1")
    }
    Procurando um módulo de biblioteca específico para Kotlin? A partir de outubro de 2023 (Firebase BoM 32.5.0) , tanto os desenvolvedores Kotlin quanto os Java podem depender do módulo da biblioteca principal (para obter detalhes, consulte o FAQ sobre esta iniciativa ).

  2. Para usar um provedor de autenticação, você precisa habilitá-lo no console do Firebase . Vá para a página Método de login na seção Firebase Authentication para ativar o login por e-mail/senha e quaisquer outros provedores de identidade que você desejar para seu aplicativo.

(Opcional) Protótipo e teste com Firebase Local Emulator Suite

Antes de falar sobre como seu aplicativo autentica usuários, vamos apresentar um conjunto de ferramentas que você pode usar para criar protótipos e testar a funcionalidade de autenticação: Firebase Local Emulator Suite. Se você estiver decidindo entre técnicas e provedores de autenticação, experimentando diferentes modelos de dados com dados públicos e privados usando autenticação e regras de segurança do Firebase ou criando protótipos de designs de UI de login, poder trabalhar localmente sem implantar serviços ativos pode ser uma ótima ideia .

Um emulador de autenticação faz parte do conjunto de emuladores locais, que permite que seu aplicativo interaja com o conteúdo e a configuração do banco de dados emulado, bem como, opcionalmente, com os recursos do projeto emulado (funções, outros bancos de dados e regras de segurança).

Usar o emulador de autenticação envolve apenas algumas etapas:

  1. Adicionando uma linha de código à configuração de teste do seu aplicativo para conectar-se ao emulador.
  2. Na raiz do diretório local do projeto, executando firebase emulators:start .
  3. Usando a IU do Local Emulator Suite para prototipagem interativa ou a API REST do emulador de autenticação para testes não interativos.

Um guia detalhado está disponível em Conecte seu aplicativo ao emulador de autenticação . Para obter mais informações, consulte a introdução do Local Emulator Suite .

Agora vamos continuar explicando como autenticar usuários.

Verifique o estado de autenticação atual

  1. Declare uma instância de FirebaseAuth .

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

    // Initialize Firebase Auth
    auth
    = Firebase.auth
    // Initialize Firebase Auth
    mAuth
    = FirebaseAuth.getInstance();
  3. Ao inicializar sua atividade, verifique se o usuário está conectado no momento.

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

Cadastre novos usuários

Crie um novo método createAccount que receba um endereço de e-mail e uma senha, os valide e, em seguida, crie um novo usuário com o método createUserWithEmailAndPassword .

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

Adicione um formulário para cadastrar novos usuários com seu e-mail e senha e chame esse novo método quando for enviado. Você pode ver um exemplo em nosso exemplo de início rápido .

Faça login de usuários existentes

Crie um novo método signIn que receba um endereço de email e uma senha, os valide e, em seguida, conecte um usuário com o método signInWithEmailAndPassword .

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

Adicione um formulário para fazer login dos usuários com email e senha e chame esse novo método quando ele for enviado. Você pode ver um exemplo em nosso exemplo de início rápido .

Acessar informações do usuário

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

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

   
// Check if user's email is verified
   
val emailVerified = it.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.
   
val uid = it.uid
}
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();
}

Próximos passos

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