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