Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我想删除Firebase Auth上的选定用户_Android_Firebase_Firebase Realtime Database_Firebase Authentication - Fatal编程技术网

Android 我想删除Firebase Auth上的选定用户

Android 我想删除Firebase Auth上的选定用户,android,firebase,firebase-realtime-database,firebase-authentication,Android,Firebase,Firebase Realtime Database,Firebase Authentication,我想删除Firebase Auth上的选定用户 现在,我可以通过数据库删除当前所选用户的数据。但是我还想从Auth部分删除用户。我可以在使用适配器之前这样做。但我在使用适配器时无法做到这一点 我的AdminPanel适配器: package com.example.yagoozonfirebasejava; import android.app.AlertDialog; import android.content.Context; import android.content.DialogI

我想删除Firebase Auth上的选定用户

现在,我可以通过数据库删除当前所选用户的数据。但是我还想从Auth部分删除用户。我可以在使用适配器之前这样做。但我在使用适配器时无法做到这一点

我的AdminPanel适配器:

package com.example.yagoozonfirebasejava;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

import java.util.List;

public class AdminPanelAdapter extends RecyclerView.Adapter<AdminPanelAdapter.CardDesingHolder> {

    private Context mContext;
    private List<Users> usersList;
    private DatabaseReference myRef;



    // Constructor
    public AdminPanelAdapter(Context mContext, List<Users> kisilerListe, DatabaseReference myRef) {
        this.mContext = mContext;
        this.usersList = kisilerListe;
        this.myRef = myRef;
    }
    // Holder class
    public class CardDesingHolder extends RecyclerView.ViewHolder {

        private TextView usernameAdmin;
        private TextView user_surnameAdminAdapter;
        private TextView user_emailAdminAdapter;
        private TextView user_RealnameeAdminAdapter;
        private TextView userUuidAdmin;
        private ImageView deleteUserAdmin;
        private FirebaseAuth mAuthAmdin;

        public CardDesingHolder(View itemView) {
            super(itemView);
            usernameAdmin = itemView.findViewById(R.id.username_AdminCard);
            user_RealnameeAdminAdapter = itemView.findViewById(R.id.userRealNameAdminCard);
            user_surnameAdminAdapter = itemView.findViewById(R.id.userSurnameAdminCard);
            user_emailAdminAdapter = itemView.findViewById(R.id.userEmail_AdminCard);
            userUuidAdmin = itemView.findViewById(R.id.userUuidAdmin);
            deleteUserAdmin = itemView.findViewById(R.id.imageViewDeleteUser);
        }
    }

    @Override
    public CardDesingHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.admin_usercard, viewGroup, false);
        return new CardDesingHolder(view);
    }

    @Override
    public void onBindViewHolder(final CardDesingHolder cardDesingHolder, int position) {
        final Users user = usersList.get(position);

        cardDesingHolder.user_emailAdminAdapter.setText("Mail : " + user.getUser_email());
        cardDesingHolder.user_surnameAdminAdapter.setText("Surname : " + user.getUser_surname());
        cardDesingHolder.user_RealnameeAdminAdapter.setText("Name : " + user.getUser_name());
        cardDesingHolder.usernameAdmin.setText("Username : " + user.getUser_username());
        cardDesingHolder.userUuidAdmin.setText("User UUID : " + user.getUser_id());

        // User Delete
        cardDesingHolder.deleteUserAdmin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final AlertDialog.Builder alert = new AlertDialog.Builder(mContext);

                alert.setTitle("Alert!");
                alert.setMessage("Are you sure??");

                alert.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(final DialogInterface dialog, int which) {
                        // Delete User value's on Database
                        myRef.child(user.getUser_id()).removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
                            @Override
                            public void onComplete(Task<Void> task) {
                                if(task.isSuccessful()) {
                                    Toast.makeText(mContext, "User Successfully Deleted!", Toast.LENGTH_SHORT).show();
                                    dialog.dismiss();
                                }
                            }
                        }).addOnFailureListener(new OnFailureListener() {
                            @Override
                            public void onFailure(Exception e) {
                                Toast.makeText(mContext, e.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
                                dialog.dismiss();
                            }
                        });
                    }
                });

                alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });

                alert.create().show();
            }
        });
    }


    @Override
    public int getItemCount() {
        return usersList.size();
    }
}
package com.example.yagoozonfirebasejava;
导入android.app.AlertDialog;
导入android.content.Context;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.support.v7.widget.RecyclerView;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ImageView;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.google.android.gms.tasks.OnCompleteListener;
导入com.google.android.gms.tasks.OnFailureListener;
导入com.google.android.gms.tasks.Task;
导入com.google.firebase.auth.FirebaseAuth;
导入com.google.firebase.auth.FirebaseUser;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
导入java.util.List;
公共类AdminPanelAdapter扩展了RecyclerView.Adapter

单击下面要删除的垃圾箱图标。从数据库中删除该用户。但它不会在身份验证时删除


我尝试了几种不同的方法,但我做不到。我想在从Auth删除时从数据库中删除所选用户数据。

以下代码适用于我删除用户帐户

用于Facebook

final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
        try {
            AuthCredential credential = FacebookAuthProvider.getCredential(FirebaseAuth.getInstance().getCurrentUser().getProviderId());
            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.");
                                                    fbLogut();
                                                }
                                            }
                                        });

                            }
                        });
            }
        }
        catch (Exception e){
            e.printStackTrace();
        }
或者(如果您是管理员)


以下代码适用于我删除用户帐户

用于Facebook

final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
        try {
            AuthCredential credential = FacebookAuthProvider.getCredential(FirebaseAuth.getInstance().getCurrentUser().getProviderId());
            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.");
                                                    fbLogut();
                                                }
                                            }
                                        });

                            }
                        });
            }
        }
        catch (Exception e){
            e.printStackTrace();
        }
或者(如果您是管理员)



这段代码怎么了?我猜你没有读我写的东西,或者我写不出来。此代码仅从数据库中删除用户数据。我想从身份验证部分删除用户。不能从客户端代码中删除任意用户。那将是一个安全漏洞。您需要编写后端代码来删除使用Firebase Admin SDK的任何用户。@DougStevenson通常我可以用一行代码直接删除。但我使用适配器和支架。我无法使用某种适配器删除它。这与适配器或支架无关。您无法使用客户端代码删除任何Firebase Auth用户帐户。此代码有什么问题?我猜您没有阅读我写的内容或我写不出来的内容。此代码仅从数据库中删除用户数据。我想从身份验证部分删除用户。不能从客户端代码中删除任意用户。那将是一个安全漏洞。您需要编写后端代码来删除使用Firebase Admin SDK的任何用户。@DougStevenson通常我可以用一行代码直接删除。但我使用适配器和支架。我无法使用某种适配器删除它。这与适配器或支架无关。您无法使用客户端代码删除任何Firebase Auth用户帐户。您从何处获取em和密码变量,从何处定义它们?我在重新验证和删除部分时出错。em和password是用户的电子邮件和密码。如果这没有帮助,请检查我编辑的答案。我现在购买了它们和密码。但我在重新验证和删除部件时出错。您编辑的答案中的解决方案就是这样一个错误:您必须在项目中安装AdminSDK。在Gradle中添加实现'com.google.firebase:firebase admin:6.9.0'。文档:我还是搞不懂。你从哪里得到em和密码变量,在哪里定义它们?我在重新验证和删除部分时出错。em和password是用户的电子邮件和密码。如果这没有帮助,请检查我编辑的答案。我现在购买了它们和密码。但我在重新验证和删除部件时出错。您编辑的答案中的解决方案就是这样一个错误:您必须在项目中安装AdminSDK。在Gradle中添加实现'com.google.firebase:firebase admin:6.9.0'。文档:我还是搞不懂。
try {
            AuthCredential credentialg = GoogleAuthProvider.getCredential(FirebaseAuth.getInstance().getCurrentUser().getUid(), null);
            // Prompt the user to re-provide their sign-in credentials
            if (user != null) {
                user.reauthenticate(credentialg)
                        .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.");
                                                    googleSignout();
                                                }
                                            }
                                        });

                            }
                        });
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
AuthCredential credential = EmailAuthProvider
                    .getCredential(em, password);
            if (user != null) {
                user.reauthenticate(credential).addOnCompleteListener(task -> user.delete().addOnCompleteListener(task1 -> {
                                    if (task1.isSuccessful()) {
                                        Log.d("Tag", "User account deleted.");
                                    }
                                }));
            }
FirebaseAuth.getInstance().deleteUser(uid);