How to delete a Firebase user from Android App?

前端 未结 8 999
攒了一身酷
攒了一身酷 2020-12-14 08:38

I\'m trying to code a Delete User method in my Android App, but I have some issues each time I execute it. This method will be executed when a user pushes the D

相关标签:
8条回答
  • 2020-12-14 08:57

    Only get current user and delete it by using following method it'll work fine

    user.delete();
    

    and you can add on Oncompletelistner also by addinduser.delete().addOnCompleteListner(new OnCompleteListner)and more on

    0 讨论(0)
  • 2020-12-14 09:00

    The answer provided by Ansuita Jr. is very beautifully explained and is correct with just a small problem. The user gets deleted even without having successful re-authentication. This is because we use

    user.delete()

    in the onComplete() method which is always executed. Therefore, we need to add an if check to check whether the task is successful or not which is mentioned below

    user.reauthenticate(credential)
              .addOnCompleteListener(new OnCompleteListener<Void>() {
                 @Override
                 public void onComplete(@NonNull Task<Void> task) {
                     if (task.isSuccessful()) {
                        Log.e("TAG", "onComplete: authentication complete");
                        user.delete()
                        .addOnCompleteListener (new OnCompleteListener<Void>() {
                               @Override
                               public void onComplete(@NonNull Task<Void> task) {
                                    if (task.isSuccessful()) {
                                        Log.e("TAG", "User account deleted.");
                                    } else {
                                        Log.e("TAG", "User account deletion unsucessful.");
                                    }
                              }
                         });
                     } else {
                         Toast.makeText(UserProfileActivity.this, "Authentication failed", 
                                   Toast.LENGTH_SHORT).show();
                     }
                  }
             });
    
    0 讨论(0)
  • 2020-12-14 09:02

    @Android developers:

    I faced an issue where the Firebase Auth information was persisting in the device's disk AFTER uninstalling the app. After experimenting and reading about it, I found that setting android:allowBackup="false" and android:fullBackupContent="false" in the Manifest's <application> tag will ensure the identity information is not persisted after the app is uninstalled.

    Please note, this kind of persistence was not happening on all Android devices. In fact, it started happening on one of my devices that never had this issue.

    0 讨论(0)
  • 2020-12-14 09:02

    Use this methods :-

    remove()

    is equivalent to calling set(null).

    or

    removeUser()

    removeUser(credentials, [onComplete])
    
    0 讨论(0)
  • 2020-12-14 09:05

    As per the Firebase documentation can user delete() method to remove user from the Firebase

    Before remove the user please reAuthenticate the user.

    Sample code

         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("user@example.com", "password1234");
    
            // 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) {
               user.delete()
                .addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if (task.isSuccessful()) {
                            Log.d(TAG, "User account deleted.");
                        }
                    }
                });
    
       }
    });
    

    For more details : https://firebase.google.com/docs/auth/android/manage-users#re-authenticate_a_user

    If you want to user re Authentication with other singin provider only need to change the Provider for GoogleAuthProvider below is the sample code

    GoogleAuthProvider.getCredential(googleIdToken,null);
    
    0 讨论(0)
  • 2020-12-14 09:05

    Your delete callback already handles the case of a failure, why do you add addOnFailureListener later?

    Try to delete it, this way:

    private void deleteAccount() {
        Log.d(TAG, "ingreso a deleteAccount");
        FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
        final FirebaseUser currentUser = firebaseAuth.getCurrentUser();
        currentUser.delete().addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG,"OK! Works fine!");
                    startActivity(new Intent(Main3WelcomeActivity.this, Main3Activity.class));
                    finish();
                } else {
                    Log.w(TAG,"Something is wrong!");
                }
            }
        });
    }
    
    0 讨论(0)
提交回复
热议问题