如何从Android应用程序中删除Firebase用户? [英] How to delete a Firebase user from Android App?

查看:210
本文介绍了如何从Android应用程序中删除Firebase用户?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在我的Android应用程序中编写一个删除用户方法,但每次执行时都会遇到一些问题。当用户按下活动上的删除帐户按钮时,将执行此方法。我的应用程序支持FirebaseUI Auth。

> private void deleteAccount(){
Log.d(TAG,ingreso a deleteAccount);
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
final FirebaseUser currentUser = firebaseAuth.getCurrentUser();
$ b currentUser.delete()。addOnCompleteListener(new OnCompleteListener< Void>(){
@Override $ b $ public void onComplete(@NonNull Task< Void> task){$ b $ (); $ b $ startActivity(new Intent(Main3WelcomeActivity.this,Main3Activity.class)); $ b() $ b finish();
}
}
})。addOnFailureListener(new OnFailureListener(){
@Override
public void onFailure(@NonNull Exception e){ (TAG,Ocurrio un error durante laeliminacióndel usuario,e);
}
});





1)当我执行这个功能时,Smart Lock信息出现在屏幕上,用户再次登录。这里是这个消息的屏幕截图。





2)在其他情况下,当用户长时间登录时,函数会抛出一个像这样的异常:

  06-30 00:01:26.672 11152-11152 / com.devpicon.android.firebasesamples E / Main3WelcomeActivity:Ocurrio un error durante laeliminacióndel usuario 
com.google.firebase.FirebaseException:发生内部错误。 [CREDENTIAL_TOO_OLD_LOGIN_AGAIN]
,位于com.google.android.gms.internal.zzacq.zzbN(未知来源)
,位于com.google.android.gms.internal.zzacn $ zzg.zza(未知来源)
at com.google.android.gms.internal.zzacy.zzbO(Unknown Source)
at com.google.android.gms.internal.zzacy $ zza.onFailure(Unknown Source)
at com.google.android.gms.internal.zzact $ zza.onTransact(Unknown Source)
at android.os.Binder.execTransact(Binder.java:453)

我读过我必须对用户进行重新验证,但是我不确定在使用Google登录时如何执行此操作。

Firebase
文档可以用户 delete()方法将用户从 Firebase 移除



删除用户之前,请 reAuthenticate


示例代码



  final FirebaseUser user = FirebaseAuth.getInstance()。getCurrentUser(); 

//从用户获取授权凭证以进行重新验证。以下示例显示了
//电子邮件和密码凭据,但有多个可能的提供程序,
//例如GoogleAuthProvider或FacebookAuthProvider。
AuthCredential凭证= EmailAuthProvider
.getCredential(user@example.com,password1234);

//提示用户重新提供登录凭据
user.reauthenticate(凭证)
.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。);
}
}
});

}
});

详情请参阅 https://firebase.google.com/docs/auth/android/manage-users#re-authenticate_a_user



如果你想用户认证与其他唱歌提供者只需要改变提供者 GoogleAuthProvider 下面是示例代码

  GoogleAuthProvider.getCredential(googleIdToken,null); 


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 Delete account button on an Activity. My apps works with FirebaseUI Auth.

Here is the method:

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();
            } 
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            Log.e(TAG,"Ocurrio un error durante la eliminación del usuario", e);
        }
    });
}

1) When I execute that function a Smart Lock message appears on the screen and the user is signed in again. Here is a screenshot of this message.

2) On other occasions, when the user is logged in for a long time, the function throws an Exception like this:

06-30 00:01:26.672 11152-11152/com.devpicon.android.firebasesamples E/Main3WelcomeActivity: Ocurrio un error durante la eliminación del usuario
com.google.firebase.FirebaseException: An internal error has occured. [ CREDENTIAL_TOO_OLD_LOGIN_AGAIN ]
at com.google.android.gms.internal.zzacq.zzbN(Unknown Source)
at com.google.android.gms.internal.zzacn$zzg.zza(Unknown Source)
at com.google.android.gms.internal.zzacy.zzbO(Unknown Source)
at com.google.android.gms.internal.zzacy$zza.onFailure(Unknown Source)
at com.google.android.gms.internal.zzact$zza.onTransact(Unknown Source)
at android.os.Binder.execTransact(Binder.java:453)

I've read that I have to re-authenticate the user but I'm not sure how to do this when I'm working with Google Sign In.

解决方案

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);

这篇关于如何从Android应用程序中删除Firebase用户?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆