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.authcomcreateUserWithEmailAndPassword/signInWithEmailAndPassword. - Login do Google: obtenha um token de ID, crie uma credencial
GoogleAuthProvidere chamesignInWithCredential. - Leia a identidade por meio de
currentUser(useuidcomo 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
- Configurando o Firebase
- Autenticação do Firebase
- Noções básicas do Cloud Firestore
- Envio com o Cloud Messaging