在flutter上删除用户数据时如何删除firebase帐户?

Ash*_*tav 5 firebase firebase-authentication flutter

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

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

Ran*_*age 10

使用flutter,如果要删除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();
  }
}
Run Code Online (Sandbox Code Playgroud)

否则,请使用 Firebase 0.15.0 或更高版本,Firebase reauthenticateWithCredential() 方法会抛出类似 { noSuchMethod: was called on 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;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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

onTap: () async {  
     await AuthService().deleteUser(email, password);
}
Run Code Online (Sandbox Code Playgroud)


Fra*_*len 8

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

有关这方面的更多信息,请参阅 的参考文档FirebaseUser.delete()

  • 这对于电话身份验证有何作用?我要求重新进行身份验证,但这对于电话身份验证来说不是有点奇怪吗? (2认同)

小智 6

删除用户代码:

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

Run Code Online (Sandbox Code Playgroud)