我正在构建一个简单的聊天应用程序,只需单击一个按钮,我希望能够从我的 Firebase 身份验证中看到所有经过身份验证的用户的列表,我该如何做同样的事情?
我找到了从 firestore 集合中获取用户的解决方案,尽管这不是我正在寻找的......
我希望将这些数据提取到一个列表中,以某种方式显示它......我怎样才能完成这个任务?
要列出所有 Firebase Auth 用户,您需要使用 Firebase 的 Admin SDK,因为客户端 Firebase Auth 不允许直接获取所有用户。
创建云函数以列出用户:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
exports.listAllUsers = functions.https.onCall(async (data, context) => {
if (!context.auth) throw new functions.https.HttpsError('unauthenticated', 'User must be authenticated');
const users = [];
const listUsersResult = await admin.auth().listUsers();
listUsersResult.users.forEach(user => users.push({ uid: user.uid, email: user.email }));
return { users };
});
在Flutter中调用该函数:
import 'package:cloud_functions/cloud_functions.dart';
Future<void> getAllUsers() async {
final callable = FirebaseFunctions.instance.httpsCallable('listAllUsers');
final response = await callable();
List users = response.data['users'];
print(users); // Display the list of users
}
此方法需要 Firebase 管理员访问权限,这在 Cloud Functions 中使用时是安全的。