私は本当にこの問題に固執しています。私はrealtimedatabase firebaseからいくつかのユーザーを削除しようとしています。 Firebaseから提供されている電子メール/パスワード認証を使用しています。私が再認証した後、ユーザーはdbからデータを削除しようとします。 firebaseからエラーが拒否されました(com.google.firebase.database.DatabaseException:Firebaseデータベースエラー:権限が拒否されました)。どうして?ここでユーザーは認証されていますが、データベースからデータを削除できません。
は私のコードです:ここでは
public void reAuthenticateUser(String password) {
final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
AuthCredential credential = EmailAuthProvider
.getCredential(user.getEmail(), password);
user.reauthenticate(credential)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (!task.isSuccessful()) {
handleExceptions(task.getException());
} else {
dialog.dismiss();
DBHelper.getInstance().deleteUser(user.getUid());//the problem is here
deleteUserAccount();
}
}
});
}
は私のDBHelperクラスです:
public class DBHelper {
private static DBHelper instance = null;
private FirebaseDatabase database;
private DatabaseReference ref;
private DBHelper() {
database = FirebaseDatabase.getInstance();
}
public static DBHelper getInstance() {
if (instance == null)
instance = new DBHelper();
return instance;
}
public void saveUserOnDB(String userId, String name, String email) {
ref = database.getReference().child("users");
ref.child(userId).setValue(new User(name, email));
}
public void deleteUser(String userId) {
ref = database.getReference().child("users");
ref.child(userId).removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(!task.isSuccessful()){
Log.e("TAG","onComplete",task.getException());
}
}
});
}}
Firebaseルール:デバッグモードで
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
、すべては、また、正常に動作し、データベースのルールをパブリックに切り替えると、データはdbから削除されます。
ありがとうございます。それは今働く:D – Gabriela