Conecta la app a Firebase
Si aún no lo has hecho, agrega Firebase a tu proyecto de Android.
En tu archivo build.gradle
de nivel de proyecto, asegúrate de incluir el repositorio Maven de Google en las secciones buildscript
y allprojects
.
Agrega Firebase Authentication a la app
Agrega la dependencia de la biblioteca de Android de Firebase Authentication al archivo Gradle (generalmente app/build.gradle
) de tu módulo (a nivel de la app):
implementation 'com.google.firebase:firebase-auth:19.1.0'
Para usar un proveedor de autenticación, necesitas habilitarlo en Firebase console. Ve a la página de método de acceso en la sección Firebase Authentication para habilitar el acceso con correo electrónico y contraseña, y cualquier otro proveedor de identidad que desees en tu app.
Comprueba el estado de autenticación actual
Declara una instancia de
FirebaseAuth
.Java
private FirebaseAuth mAuth;
Kotlin
private lateinit var auth: FirebaseAuth
En el método
onCreate()
, inicializa la instanciaFirebaseAuth
.Java
// Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
Kotlin
// Initialize Firebase Auth auth = FirebaseAuth.getInstance()
Cuando inicialices la actividad, verifica que el usuario haya accedido.
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) }
Registra usuarios nuevos
Crea un nuevo método createAccount
que reciba una dirección de correo electrónico y contraseña, las valide y, luego, cree un nuevo usuario mediante el método [createUserWithEmailAndPassword
](/docs/reference/android/com/google/firebase/auth/FirebaseAuth.html#createUserWithEmailAndPassword(java.lang.String, java.lang.String).
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) } // ... }
Agrega un formulario para registrar usuarios nuevos con su correo electrónico y contraseña, y llama a este método nuevo cuando se envíe. Puedes ver un ejemplo en nuestra muestra de inicio rápido.
Acceso de usuarios existentes
Crea un nuevo método signIn
que reciba una dirección de correo electrónico y contraseña, los valide y, luego, permita que un usuario acceda mediante el 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
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) } // ... }
Agrega un formulario para que los usuarios accedan con su correo electrónico y contraseña, y llama a este método nuevo cuando se envíe. Puedes ver un ejemplo en nuestra muestra de inicio rápido.
Accede a la información del usuario
Si un usuario accedió correctamente, puedes obtener los datos de su cuenta en cualquier momento mediante el 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
val user = FirebaseAuth.getInstance().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óximos pasos
Explora las guías que explican cómo agregar otros servicios de identidad y autenticación: