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:30.1.0') // 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' }
Com 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 das bibliotecas do Firebase sem usar a BoM.
Se você preferir não usar a BoM do Firebase, especifique cada versão das bibliotecas 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 as versões dessas bibliotecas para garantir a compatibilidade de todas elas.
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.5' }
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:30.1.0') // 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' }
Com 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 das bibliotecas do Firebase sem usar a BoM.
Se você preferir não usar a BoM do Firebase, especifique cada versão das bibliotecas do Firebase na linha de dependência correspondente.
Caso você use várias bibliotecas do Firebase no seu app, recomendamos a BoM para gerenciar as versões dessas bibliotecas para garantir a compatibilidade de todas elas.
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.5' }
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 de emuladores locais do Firebase (opcional)
Antes de ver informações sobre como seu app autentica os usuários, confira o Pacote de emuladores locais do Firebase, um conjunto de ferramentas que podem ser usadas para criar protótipos e testar a funcionalidade do Authentication. Trabalhar localmente sem implantar serviços é uma ótima ideia se você estiver escolhendo técnicas e provedores de autenticação, testando modelos de dados diferentes com dados públicos e privados 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 de emuladores locais, 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:
- Para se conectar ao emulador, adicione uma linha de código à configuração de teste do app.
- Execute
firebase emulators:start
na raiz do diretório do projeto local. - Use a IU do Pacote de emuladores locais 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 Pacote de emuladores locais do Firebase.
Agora veremos como autenticar os usuários.
Verificar o estado atual da autenticação
Declare uma instância de
FirebaseAuth
.Java
private FirebaseAuth mAuth;
Kotlin+KTX
private lateinit var auth: FirebaseAuth
No método
onCreate()
, inicialize a instânciaFirebaseAuth
.Java
// Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
Kotlin+KTX
// Initialize Firebase Auth auth = Firebase.auth
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.
Iniciar sessão com usuários existentes
Crie um 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á acessar 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: