Hemos visto en muchas de las aplicaciones que si tienen la opción de eliminar al usuario o pueden decir su cuenta de forma permanente. Aquí vamos a ver cómo podemos implementar eso en nuestra aplicación y podemos eliminar nuestra cuenta de forma permanente de la autenticación de Firebase. Aquí, mientras escribimos nuestro código, eliminaremos al usuario, pero antes de eso, volveremos a autenticar al usuario.
Implementación paso a paso
Paso 1: si es nuevo en Firebase , puede consultar la autenticación de usuario mediante Firebase en Android .
Paso 2: siga todos los pasos e «Inicie sesión» en su aplicación de Android. Luego cree un archivo mainmenu.xml de la siguiente manera
XML
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/menulogout" android:title="Logout" /> <item android:id="@+id/delete" android:title="Delete User" /> </menu>
Paso 3: Cree una nueva actividad vacía y nombre la actividad como DeleteUser .
Paso 4: luego vaya al archivo MainActivity.java MainActivity.java
Java
import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import androidx.viewpager.widget.ViewPager; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.android.material.tabs.TabLayout; 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 MainActivity extends AppCompatActivity { private FirebaseAuth mAuth; private ViewPager mviewPager; private FirebaseAuth firebaseAuth; private Toolbar mtoolbar; private SectionsPagerAdapter mSectionsPagerAdapter; private TabLayout mTabLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mAuth = FirebaseAuth.getInstance(); mtoolbar = (Toolbar)findViewById(R.id.main_page_toolbar); } @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); getMenuInflater().inflate(R.menu.mainmenu, menu); return true; } @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { super.onOptionsItemSelected(item); if (item.getItemId() == R.id.menulogout) { FirebaseAuth.getInstance().signOut(); senttostart(); } if (item.getItemId() == R.id.delete) { startActivity(new Intent(MainActivity.this, DeleteUser.class)); } return true; } }
Paso 5: trabajar con el archivo activity_deleteuser.xml
app > res > layout > activity_deleteuser.xml activity_deleteuser.xml Crearemos dos EditText simples y un Button .
XML
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" tools:context=".DeleteUser"> <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" /> <Button android:id="@+id/submit" 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="227dp" android:background="@color/colorPrimary" android:text="Submit Here" android:textSize="15dp" /> </RelativeLayout>
Paso 4: trabajar con el archivo DeleteUser.java
Vaya al archivo DeleteUser.java y consulte el siguiente código. A continuación se muestra el código para el archivo DeleteUser.java . Se agregan comentarios dentro del código para comprender el código con más detalle.
Java
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 androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; 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 DeleteUser extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_delete_user); final EditText email = findViewById(R.id.email); final EditText password = findViewById(R.id.logpass); Button submit = findViewById(R.id.submit); submit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { deleteuser(email.getText().toString(), password.getText().toString()); } }); } private void deleteuser(String email, String password) { final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); // Get auth credentials from the user for re-authentication. The example below shows // email and password credentials but there are multiple possible providers, // such as GoogleAuthProvider or FacebookAuthProvider. AuthCredential credential = EmailAuthProvider.getCredential(email, password); // Prompt the user to re-provide their sign-in credentials if (user != null) { user.reauthenticate(credential) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { user.delete() .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d("TAG", "User account deleted."); startActivity(new Intent(DeleteUser.this, StartActivity.class)); Toast.makeText(DeleteUser.this, "Deleted User Successfully,", Toast.LENGTH_LONG).show(); } } }); } }); } } }
Producción: