0Pricing
Android Academy · Aula

Autenticação do Firebase

Login por e-mail e Google.

Autenticação do Firebase é uma aula grátis de Android Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Android Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Android Academy inclui 4 aulas no total.

Por que usar o Firebase Auth?

Firebase Authentication cuida das partes complexas do início de sessão dos usuários: armazenamento seguro de senhas, renovação de tokens, recuperação de contas e vários provedores (e-mail, Google, Apple, telefone e anônimo).

Em vez de criar servidores de login, você chama algumas APIs e obtém um FirebaseUser verificado. Nesta lição, você usará e-mail/senha e o login do Google.

Ativar métodos de início de sessão

Antes de escrever o código, ative os provedores desejados no console do Firebase:

  • Acesse Autenticação → Método de início de sessão.
  • Ative E-mail/senha.
  • Ative o Google (escolha um e-mail de suporte).

Para o login do Google, você também precisa adicionar a impressão digital SHA-1 do seu aplicativo às configurações do projeto; caso contrário, o login falhará com um erro do desenvolvedor.

Obter a instância do FirebaseAuth

O ponto de entrada é Firebase.auth. Ele expõe o usuário atual e métodos para criar contas, iniciar sessão e encerrar sessão.

auth.currentUser é null quando ninguém iniciou sessão — uma maneira rápida de decidir qual tela exibir na inicialização.

import com.google.firebase.Firebase
import com.google.firebase.auth.auth

val auth = Firebase.auth

fun isLoggedIn(): Boolean {
    return auth.currentUser != null
}

Criar uma conta

Registre um novo usuário com createUserWithEmailAndPassword. Ele retorna uma Task, mas, em código com corrotinas, você pode usar await() nela (de kotlinx-coroutines-play-services).

Após o sucesso, o usuário entra imediatamente na conta.

import com.google.firebase.Firebase
import com.google.firebase.auth.auth
import kotlinx.coroutines.tasks.await

suspend fun register(email: String, password: String): Result<Unit> {
    return try {
        Firebase.auth
            .createUserWithEmailAndPassword(email, password)
            .await()
        Result.success(Unit)
    } catch (e: Exception) {
        Result.failure(e)
    }
}

Entrar com e-mail

Para entrar com um usuário existente, use signInWithEmailAndPassword. A estrutura é semelhante à do cadastro.

Envolver a chamada em try/catch permite exibir erros claros — senha incorreta, usuário inexistente ou e-mail malformado.

import com.google.firebase.Firebase
import com.google.firebase.auth.auth
import com.google.firebase.auth.FirebaseUser
import kotlinx.coroutines.tasks.await

suspend fun login(email: String, password: String): FirebaseUser? {
    val result = Firebase.auth
        .signInWithEmailAndPassword(email, password)
        .await()
    return result.user
}

Uma tela de login no Compose

Integre a autenticação a uma pequena tela do Compose. Mantenha o e-mail e a senha no estado, chame as funções suspensas a partir de um escopo de corrotina e mostre os erros.

@Composable
fun LoginScreen(onLoggedIn: () -> Unit) {
    var email by remember { mutableStateOf("") }
    var password by remember { mutableStateOf("") }
    var error by remember { mutableStateOf<String?>(null) }
    val scope = rememberCoroutineScope()

    Column(Modifier.padding(16.dp)) {
        TextField(email, { email = it }, label = { Text("Email") })
        TextField(password, { password = it }, label = { Text("Password") })
        error?.let { Text(it, color = Color.Red) }
        Button(onClick = {
            scope.launch {
                val user = login(email, password)
                if (user != null) onLoggedIn() else error = "Login failed"
            }
        }) { Text("Sign in") }
    }
}

Ler o usuário atual

Um FirebaseUser contém detalhes de identidade: uid (ID exclusivo e estável), email, displayName e photoUrl.

Use uid como chave ao armazenar os dados desse usuário no Firestore — ele é exclusivo e imutável.

import com.google.firebase.Firebase
import com.google.firebase.auth.auth

fun describeUser() {
    val user = Firebase.auth.currentUser ?: return
    println("UID: ${user.uid}")
    println("Email: ${user.email}")
    println("Name: ${user.displayName ?: "(none)"}")
}

Observar o estado da autenticação

A autenticação pode mudar a qualquer momento (entrada, saída ou atualização do token). Registre um AuthStateListener para reagir a essas mudanças em vez de consultá-las repetidamente.

Isso é perfeito para alternar automaticamente entre uma tela de login e uma tela inicial.

import com.google.firebase.Firebase
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.auth

val listener = FirebaseAuth.AuthStateListener { auth ->
    val user = auth.currentUser
    if (user == null) {
        println("Signed out -> show login")
    } else {
        println("Signed in as ${user.email}")
    }
}

// Attach and detach with lifecycle
Firebase.auth.addAuthStateListener(listener)
// Firebase.auth.removeAuthStateListener(listener)

Login do Google com o Credential Manager

A maneira moderna de fazer login com o Google é usar a API Credential Manager. Você solicita um token de ID do Google e depois o troca por uma credencial do Firebase.

O passo principal é criar uma credencial GoogleAuthProvider a partir do token de ID retornado e passá-la para signInWithCredential.

import com.google.firebase.Firebase
import com.google.firebase.auth.GoogleAuthProvider
import com.google.firebase.auth.auth
import kotlinx.coroutines.tasks.await

suspend fun firebaseSignInWithGoogle(idToken: String) {
    // idToken comes from Credential Manager / Google Identity
    val credential = GoogleAuthProvider.getCredential(idToken, null)
    Firebase.auth.signInWithCredential(credential).await()
}

Sair da conta

Sair da conta exige uma única chamada: auth.signOut(). Ela limpa o usuário local e aciona seu listener de estado da autenticação.

Para o login do Google, talvez você também precise limpar o estado do Credential Manager para que o seletor apareça novamente na próxima vez. Depois de sair, currentUser se torna null.

import com.google.firebase.Firebase
import com.google.firebase.auth.auth

fun logout() {
    Firebase.auth.signOut()
    // currentUser is now null; your AuthStateListener fires
}

Lidar com erros de autenticação

Falhas de autenticação lançam exceções tipadas que você pode tratar separadamente:

  • FirebaseAuthInvalidUserException — usuário inexistente ou desativado.
  • FirebaseAuthInvalidCredentialsException — senha incorreta ou e-mail inválido.
  • FirebaseAuthUserCollisionException — e-mail já cadastrado.

Converta essas exceções em mensagens amigáveis em vez de mostrar rastreamentos brutos da pilha.

import com.google.firebase.auth.FirebaseAuthInvalidCredentialsException
import com.google.firebase.auth.FirebaseAuthUserCollisionException

fun messageFor(e: Throwable): String = when (e) {
    is FirebaseAuthInvalidCredentialsException -> "Wrong email or password"
    is FirebaseAuthUserCollisionException -> "That email is already in use"
    else -> "Something went wrong, try again"
}

Verificação rápida

Você quer alternar automaticamente o usuário entre uma tela de login e uma tela inicial sempre que ele entrar ou sair da conta. Qual é a abordagem mais adequada?

Recapitulação: autenticação

Agora você já pode autenticar usuários com o Firebase:

  • Ative os provedores no console e adicione seu SHA-1 para o Google.
  • Use Firebase.auth com createUserWithEmailAndPassword / signInWithEmailAndPassword.
  • Login do Google: obtenha um token de ID, crie uma credencial GoogleAuthProvider e chame signInWithCredential.
  • Leia a identidade por meio de currentUser (use uid como chave dos dados).
  • Reaja com um AuthStateListener e saia da conta com signOut().

Próximo: armazenar os dados desse usuário no Cloud Firestore.

Perguntas Frequentes

A aula “Autenticação do Firebase” é grátis?

Sim — o texto completo de “Autenticação do Firebase” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Android Academy, atualize para CoddyKit PRO. O curso de Android Academy inclui 4 aulas no total.

O que vou aprender em “Autenticação do Firebase”?

Login por e-mail e Google. Você pratica Android Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Android Academy?

Nenhuma experiência prévia é necessária. Android Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Autenticação do Firebase”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Android Academy?

Sim. Cada aula de Android Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Configurando o Firebase
  2. Autenticação do Firebase
  3. Noções básicas do Cloud Firestore
  4. Envio com o Cloud Messaging
← Voltar para Android Academy