在Flutter上删除用户数据后,如何删除Firebase帐户?

时间:2019-06-04 02:43:38

标签: firebase flutter firebase-authentication

是否可以在Flutter身份验证中删除Firebase帐户?如果是,该怎么做?我一直在搜索,但找不到路。

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

3 个答案:

答案 0 :(得分:4)

如果您要删除Firebase帐户以及相关的Firestore用户收集文档,请使用flutter,以下方法可以正常工作。 (由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;
    }
  }
}

然后在flift小部件树的clickable事件中使用以下代码来实现目标;

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

答案 1 :(得分:3)

删除用户的代码:

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

答案 2 :(得分:0)

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

有关更多信息,请参见FirebaseUser.delete()的参考文档。