En cualquier aplicación, tenemos una función para iniciar sesión con nuestro correo electrónico y contraseña. A veces sucede que queremos cambiar nuestro correo electrónico o perdimos la contraseña de nuestro correo electrónico anterior, por lo que aquí vamos a implementar la misma función para cambiar nuestro correo electrónico usando Firebase Authentication. Tenga en cuenta que vamos a implementar este proyecto utilizando el lenguaje Java .
Implementación paso a paso
Consideremos que ya tiene un proyecto existente o puede crear un nuevo proyecto.
Paso 1: Crear un nuevo Proyecto
Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.
Paso 2: trabajar con el archivo XML
Vaya al archivo XML y consulte el siguiente código. A continuación se muestra el código para el archivo XML .
XML
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" tools:context=".ChangeEmail"> <EditText android:id="@+id/email" android:layout_width="267dp" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_marginStart="36dp" android:layout_marginTop="120dp" android:ems="10" android:hint="Email" android:inputType="textEmailAddress" /> <EditText android:id="@+id/logpass" android:layout_width="259dp" android:layout_height="58dp" android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_marginStart="32dp" android:layout_marginTop="161dp" android:ems="10" android:hint="Password" android:inputType="textPassword" /> <EditText android:id="@+id/change" android:layout_width="259dp" android:layout_height="58dp" android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_marginStart="32dp" android:layout_marginTop="211dp" android:ems="10" android:hint="Change Email" android:inputType="textEmailAddress" /> <Button android:id="@+id/changeemail" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_marginStart="192dp" android:layout_marginTop="277dp" android:background="@color/colorPrimary" android:text="Change Email Here" android:textSize="15dp" /> </RelativeLayout>
Paso 3: trabajar con el archivo Java
Entonces, la parte principal existe en el archivo java. En este archivo, necesitamos volver a autenticar al usuario ya que, según la documentación, cambiar la dirección de correo electrónico principal es una acción delicada. A continuación se muestra el fragmento de código para hacer lo mismo.
Java
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); // Get auth credentials from the user for re-authentication AuthCredential credential = EmailAuthProvider.getCredential(email, password); // Current Login Credentials // Prompt the user to re-provide their sign-in credentials user.reauthenticate(credential).addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { Log.d("value", "User re-authenticated."); // Now change your email address \\ //----------------Code for Changing Email Address----------\\ FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); user.updateEmail(change.getText().toString()).addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Toast.makeText(ChangeEmail.this, "Email Changed" + " Current Email is " + change.getText().toString(), Toast.LENGTH_LONG).show(); } } }); } });
A continuación se muestra el código completo del archivo Java para el archivo XML anterior .
Java
import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.firebase.auth.AuthCredential; import com.google.firebase.auth.EmailAuthProvider; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.FirebaseUser; public class ChangeEmail extends AppCompatActivity { FirebaseAuth auth; Button changeemail; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_change_email); // Initialising the email and password final EditText email = findViewById(R.id.email); final EditText password = findViewById(R.id.logpass); changeemail = findViewById(R.id.changeemail); // click on this to change email changeemail.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { changeemail(email.getText().toString(), password.getText().toString()); } }); } EditText change; // Here we are going to change our email using firebase re-authentication private void changeemail(String email, final String password) { change = findViewById(R.id.change); FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); // Get auth credentials from the user for re-authentication AuthCredential credential = EmailAuthProvider.getCredential(email, password); // Current Login Credentials // Prompt the user to re-provide their sign-in credentials user.reauthenticate(credential).addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { Log.d("value", "User re-authenticated."); // Now change your email address \\ //----------------Code for Changing Email Address----------\\ FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); user.updateEmail(change.getText().toString()).addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Toast.makeText(ChangeEmail.this, "Email Changed" + " Current Email is " + change.getText().toString(), Toast.LENGTH_LONG).show(); } } }); } }); } }
Producción: