Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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
当用户数据在Flatter上删除时,如何删除firebase帐户?_Firebase_Flutter_Firebase Authentication - Fatal编程技术网

当用户数据在Flatter上删除时,如何删除firebase帐户?

当用户数据在Flatter上删除时,如何删除firebase帐户?,firebase,flutter,firebase-authentication,Firebase,Flutter,Firebase Authentication,是否可以在Flatter上的身份验证中删除firebase帐户?如果是,怎么做?我一直在寻找,但没有找到路 Firestore.instance.collection("users").document(uid).delete().then((_){ // delete account on authentication after user data on database is deleted }); 要删除用户帐户,请在用户对象上调用delete() 有关详

是否可以在Flatter上的身份验证中删除firebase帐户?如果是,怎么做?我一直在寻找,但没有找到路

Firestore.instance.collection("users").document(uid).delete().then((_){
   // delete account on authentication after user data on database is deleted            
});

要删除用户帐户,请在用户对象上调用
delete()


有关详细信息,请参阅参考文档。

删除用户代码:

FirebaseUser user = await FirebaseAuth.instance.currentUser();
user.delete();


使用flifter,如果要删除firebase帐户以及关联的firestore用户集合文档,以下方法可以正常工作。(用户集合中由firebase uid命名的文档)

数据库类

class DatabaseService {
  final String uid;

  DatabaseService({this.uid});

  final CollectionReference userCollection =
      Firestore.instance.collection('users');

  Future deleteuser() {
    return userCollection.document(uid).delete();
  }
}
使用Firebase版本0.15.0或更高版本,否则,Firebase reauthenticateWithCredential()方法会引发类似于{noSuchMethod:在null上被调用}的错误

身份验证类

class AuthService {
  final FirebaseAuth _auth = FirebaseAuth.instance;

Future deleteUser(String email, String password) async {
    try {
      FirebaseUser user = await _auth.currentUser();
      AuthCredential credentials =
          EmailAuthProvider.getCredential(email: email, password: password);
      print(user);
      AuthResult result = await user.reauthenticateWithCredential(credentials);
      await DatabaseService(uid: result.user.uid).deleteuser(); // called from database class
      await result.user.delete();
      return true;
    } catch (e) {
      print(e.toString());
      return null;
    }
  }
}
然后在颤振小部件树的可点击事件中使用以下代码来实现目标

onTap: () async {  
     await AuthService().deleteUser(email, password);
}

这对phone auth tho是如何工作的?我要求重新验证,但这不是电话验证的wierd吗?奇怪的是,当前用户总是返回为null!