É possível usar o Firebase Authentication para permitir que seus usuários se autentiquem com o Firebase usando os endereços de e-mail e senhas deles e gerenciem as contas baseadas em senha do app.
Antes de começar
- Adicione o Firebase ao projeto para Android, caso ainda não tenha feito isso.
- No arquivo
build.gradle
no nível do projeto, inclua o repositório Maven do Google nas seçõesbuildscript
eallprojects
. Adicione as dependências da biblioteca do Firebase Authentication para Android ao arquivo do Gradle no nível do aplicativo do módulo (geralmente
app/build.gradle
):implementation 'com.google.firebase:firebase-auth:19.1.0'
- Caso você ainda não tenha conectado o app ao projeto do Firebase, faça isso no Console do Firebase.
- Ative o login com e-mail/senha:
- No Console do Firebase, abra a seção Authentication.
- Na guia Método de login, ative o login por E-mail/Senha e clique em Salvar.
Criar uma conta baseada em senha
Para criar uma nova conta de usuário com uma senha, conclua estas etapas na atividade de inscrição do seu aplicativo:
- No método
onCreate
da sua atividade de inscrição, acesse a instância compartilhada do objetoFirebaseAuth
:Java
private FirebaseAuth mAuth;// ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
Kotlin
private lateinit var auth: FirebaseAuth// ... // Initialize Firebase Auth auth = FirebaseAuth.getInstance()
- 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(); updateUI(currentUser); }
Kotlin
public override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser updateUI(currentUser) }
- 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.
- Crie uma conta enviando o endereço de e-mail e a senha do novo usuário para
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
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) } // ... }
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 app, faça o seguinte:
- No método
onCreate
da atividade de login, acesse a instância compartilhada do objetoFirebaseAuth
:Java
private FirebaseAuth mAuth;// ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
Kotlin
private lateinit var auth: FirebaseAuth// ... // Initialize Firebase Auth auth = FirebaseAuth.getInstance()
- 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(); updateUI(currentUser); }
Kotlin
public override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser updateUI(currentUser) }
- Quando um usuário fizer login no app, transmita o endereço de e-mail e a senha dele para
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
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) } // ... }
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 seus apps, use o objeto
FirebaseUser
para receber as informações básicas de perfil do usuário. 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 ID exclusivo do usuário conectado. Utilize essa informação para controlar o acesso dele aos dados.
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
:
Java
FirebaseAuth.getInstance().signOut();
Kotlin
FirebaseAuth.getInstance().signOut()