在其他带有removeUser的Firebase版本中,我们只能使用电子邮件和密码删除用户。使用新的Firebase版本,如果您已连接到该版本,您似乎只能删除和用户...但问题出现在我与管理员用户连接并且我尝试删除其他用户时。这是代码。
final FirebaseUser user = mAuth.getCurrentUser();
AuthCredential credential = EmailAuthProvider
.getCredential(mail, postSnapshot.getValue(User.class).getPwdUser());
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 > taskDeleted) {
if (taskDeleted.isSuccessful()) {
Toast.makeText(getApplicationContext(),
"Deleted user!", Toast.LENGTH_LONG).show();
}
}
});
}
});
但是我无法获得删除方法,因为在重新验证时它会抛出错误,“提供的凭据与先前登录的用户不对应”。任何人都知道如何从其他用户重新认证?
答案 0 :(得分:1)
适用于Android的Firebase SDK只能删除当前登录的用户。因此,如果您知道用户的电子邮件+密码,则必须以该用户身份登录才能删除该帐户。
对于管理员功能,您应该使用Firebase Admin SDK,您应该在受信任的后端服务器上运行该Firebase Admin SDK for Node。目前,身份验证功能仅适用于{{3}}。
答案 1 :(得分:0)
最后代码应该是这样的
mAuth.signOut();
mAuth.signInWithEmailAndPassword(email,password)
.addOnCompleteListener(UserList.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
mAuth= FirebaseAuth.getInstance(myFirebaseRef.getDatabase().getApp());
try{
mAuth.signInWithEmailAndPassword(getsPreferences().getString("mailUser",""), getsPreferences().getString("pwd",""))
.addOnCompleteListener(UserList.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
}});
}catch(Exception e){
}
}
}});