flutter - Flutter 的 Firebase 文档不适用于删除用户
问题描述
以下有关删除用户的文档不起作用:
try {
await FirebaseAuth.instance.currentUser.delete();
} catch on FirebaseAuthException (e) {
if (e.code == 'requires-recent-login') {
print('The user must reauthenticate before this operation can be executed.');
}
}
“delete()”不是 Flutter 识别的函数。Flutter 也无法识别“FirebaseAuthException”。
如何删除用户?我在哪里可以找到这些信息?
解决方案
使用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();
}
}
否则请使用 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;
}
}
}
然后在颤振小部件树的可点击事件中使用以下代码来实现目标:
onTap: () async {
await AuthService().deleteUser(email, password);
}
推荐阅读
- javascript - 我想调用 AngularJS 控制器来查询一个文件中的数据库并使用另一个文件中的值
- .net - 并行压缩大文件(~30 GB)?
- javascript - 创建自定义 JS 语法/速记
- asp.net - 为什么视图状态大小会如此增加
- angular - 收到与可观察的 Angular2 相关的错误
- apache - 成功安装 IBM HTTP 服务器后不显示主页
- android - 如何在 Android Studio 的 Logcat 中每行显示 n 条记录?
- facebook - Instagram API,待审核
- c# - Microsoft.ServiceBus.NamespaceManager - 托管服务标识 (MSI)
- php - 按值对php数组进行排序,从小到大排序