Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.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身份验证:can';t实例化AuthCredential_Android_Firebase_Firebase Realtime Database_Firebase Authentication - Fatal编程技术网

Android Firebase身份验证:can';t实例化AuthCredential

Android Firebase身份验证:can';t实例化AuthCredential,android,firebase,firebase-realtime-database,firebase-authentication,Android,Firebase,Firebase Realtime Database,Firebase Authentication,我正在尝试制作一个主用户模块,用户可以删除其他用户。我从其他问题中了解到,如果你想删除一个用户,你必须以该用户的身份登录。然后,我意识到您可以使用firebase auth存储的凭据信息登录。(作为参考,我使用谷歌、facebook和电子邮件的方法) 我还将一个用户实体存储在Firebase数据库中,该实体对应于Firebase Auth。这是我的用户类: public class User { // variables. private String appId

我正在尝试制作一个主用户模块,用户可以删除其他用户。我从其他问题中了解到,如果你想删除一个用户,你必须以该用户的身份登录。然后,我意识到您可以使用firebase auth存储的凭据信息登录。(作为参考,我使用谷歌、facebook和电子邮件的方法)

我还将一个用户实体存储在Firebase数据库中,该实体对应于Firebase Auth。这是我的用户类:

public class User {
        // variables.
        private String appId;
        private String email;
        private String name;
        private String description;
        private String photoUrl;
        private boolean isAdmin;
        private boolean isSuspended;
        private boolean isDeleted;
        private AuthCredential credential;

        // all those getters and setters go here.
}
请注意,我在我的用户中存储了一个AuthCredential实例,这是我在注册该用户(或使用facebook和google登录)时首次设置的。 每当我注册/登录时,都会出现以下错误:

java.lang.RuntimeException: java.lang.InstantiationException: can't instantiate class com.google.firebase.auth.AuthCredential
但是,我检查了我的firebase数据库,并插入了凭据

Firebase使用电子邮件和密码进行身份验证。

使用谷歌提供商进行Firebase身份验证。

我的问题是,在firebase数据库中存储我的用户凭据并再次恢复它的正确方法是什么? 此外,我不知道我所做的是否正确,但我的观点是,我想从某个管理员用户中删除另一个用户。为此,在我的主用户模块中,我将存储我的管理员用户凭据,然后作为将被删除的用户登录,删除我自己,并使用存储的管理员用户凭据重新登录到管理员用户。有没有其他方法可以做到这一点

谢谢你的帮助

编辑

每当我这样做时,我都会出错:

User curUser = dataSnapshot.getValue(User.class);

。。。在我将AuthCredential实例添加到我的用户类之前,这很好。

AuthCredential是一个抽象类,不能实例化抽象类,因此无论何时注册都会出现错误。

AuthCredential是一个抽象类,无法实例化抽象类,因此每次注册时都会出现错误。
私有FirebaseAuth FirebaseAuth

   firebaseAuth = FirebaseAuth.getInstance();


    //logging in the user
    firebaseAuth.signInWithEmailAndPassword(email, password)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    progressDialog.dismiss();
                    //if the task is successfull 
                    if(task.isSuccessful()){
                        //start the activity
                        finish();
                        startActivity(new Intent(getApplicationContext(), Activity.class));
                    }
                }
            });
firebaseAuth=firebaseAuth.getInstance();
//登录用户
firebaseAuth.使用电子邮件和密码登录(电子邮件,密码)
.addOnCompleteListener(这是新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
progressDialog.disclose();
//如果任务成功
if(task.issusccessful()){
//开始活动
完成();
startActivity(新意图(getApplicationContext(),Activity.class));
}
}
});

私有FirebaseAuth FirebaseAuth

   firebaseAuth = FirebaseAuth.getInstance();


    //logging in the user
    firebaseAuth.signInWithEmailAndPassword(email, password)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    progressDialog.dismiss();
                    //if the task is successfull 
                    if(task.isSuccessful()){
                        //start the activity
                        finish();
                        startActivity(new Intent(getApplicationContext(), Activity.class));
                    }
                }
            });
firebaseAuth=firebaseAuth.getInstance();
//登录用户
firebaseAuth.使用电子邮件和密码登录(电子邮件,密码)
.addOnCompleteListener(这是新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
progressDialog.disclose();
//如果任务成功
if(task.issusccessful()){
//开始活动
完成();
startActivity(新意图(getApplicationContext(),Activity.class));
}
}
});
对于电子邮件:

AuthCredential credential = EmailAuthProvider
  .getCredential("user@example.com", "password1234");
对于google,您需要GoogleSignInAccount idToken

对于facebook,您需要facebook AccessToken getToken()

电邮:

AuthCredential credential = EmailAuthProvider
  .getCredential("user@example.com", "password1234");
对于google,您需要GoogleSignInAccount idToken

对于facebook,您需要facebook AccessToken getToken()