此问题已在此处有答案:
Delete a specific user from Firebase(6个回答)
Delete other user accounts from Firestore Auth using flutter [duplicate](1个答案)
关闭7天前。
我已经创建了一个管理应用程序,我想管理其他一个用户做一些与firebase认证登录的行动排序。他们可以登录与firebase认证,但我想有另一个用户的列表,并添加删除这些用户。但是当我删除用户的时候,我得到了一个错误,删除另一个用户。
这些是我的函数,但当deleteUser(userid)它显示“该方法'deleteUser'不是为类型'FirebaseAuth'定义的。尝试将名称更正为现有方法的名称,或定义名为'deleteUser'的方法“
void addCounter({
required String name,
required String email,
required String password,
}) async {
print('on add counter');
try {
await auth
.createUserWithEmailAndPassword(email: email, password: password)
.then((value) => {
FirebaseFirestore.instance
.collection("SuperUsers")
.doc(value.user!.uid)
.set({
'role': "counter",
'uid': value.user!.uid,
'name': name,
})
});
} on FirebaseAuthException catch (e) {
// this is solely for the Firebase Auth Exception
// for example : password did not match
print(e.message);
// Get.snackbar("Error", e.message!);
Get.snackbar(
"Error",
e.message!,
snackPosition: SnackPosition.BOTTOM,
);
} catch (e) {
// this is temporary. you can handle different kinds of activities
//such as dialogue to indicate what's wrong
print(e.toString());
}
}
Future<void> deleteCounter(String userId) async {
try {
// Step 1: Remove user from Firebase Authentication
await FirebaseAuth.instance.deleteUser(userId);
// Step 2: Remove user data from Firestore
await FirebaseFirestore.instance
.collection('SuperUsers')
.doc(userId)
.delete();
} catch (e) {
print(e.toString());
}
}
Future<void> updateUser(
{required String userId, required String name}) async {
try {
await FirebaseFirestore.instance
.collection('SuperUsers')
.doc(userId)
.update({
'name': name,
});
} catch (e) {
print(e.toString());
}
}
static Stream<List<CounterModel>> counterStream() {
return firebaseFirestore
.collection('SuperUsers')
.snapshots()
.map((QuerySnapshot query) {
List<CounterModel> counters = [];
for (var counter in query.docs) {
final counterItem =
CounterModel.fromDocumentSnapshot(snapshot: counter);
counters.add(counterItem);
}
return counters;
});
}
1条答案
按热度按时间w8biq8rn1#
这不是拥有用户列表并对其进行管理的正确方法。举一个例子(这就是导致你出错的原因),你不能用
FirebaseAuth.instance.deleteUser(userId)
删除用户,除非你当前使用你想删除的用户进行了签名。所以,你应该有一个数据库来管理用户(例如使用FirebaseStorage)并为他们提供属性,你可以给予角色,名称等。当你想删除一些用户时,你必须检查角色是否允许用户这样做,如果允许,你可以从数据库中删除该文档。