我正在使用firebase创建一个Android聊天应用程序。到目前为止,我已经制作了一个通用的群聊应用。现在我想让它成为一个单独的聊天应用程序,它将有一个用户列表,当我们从该列表中选择一个人时,我们可以与他/她单独聊天。但是,我无法从Firebase获取此用户列表。我在Firebase Auth UI中保留了Google登录和电子邮件登录选项。任何帮助将不胜感激
答案 0 :(得分:3)
如果您需要按uid
,email
或phoneNumber
查找用户,则可以使用管理SDK执行此操作:
https://firebase.google.com/docs/auth/admin/manage-users
您甚至可以下载所有用户: https://firebase.google.com/docs/auth/admin/manage-users#list_all_users
您需要从Node.js后端服务器或通过具有Firebase功能的HTTP端点执行此操作。
此外,Admin SDK允许您设置自定义用户属性,如果您想要创建不同的用户组,这些属性可能会有所帮助:
https://firebase.google.com/docs/auth/admin/custom-claims
admin.auth().setCustomUserClaims(uid, {groupId: '1234'})
答案 1 :(得分:1)
Firebase Admin SDK允许批量检索整个用户列表:
function listAllUsers(nextPageToken) {
// List batch of users, 1000 at a time.
admin.auth().listUsers(1000, nextPageToken)
.then(function(listUsersResult) {
listUsersResult.users.forEach(function(userRecord) {
console.log('user', userRecord.toJSON());
});
if (listUsersResult.pageToken) {
// List next batch of users.
listAllUsers(listUsersResult.pageToken);
}
})
.catch(function(error) {
console.log('Error listing users:', error);
});
}
// Start listing users from the beginning, 1000 at a time.
listAllUsers();
注意:此API当前仅可用于Admin Node.js SDK。
答案 2 :(得分:0)
您无法从Firebase身份验证中检索所有经过身份验证的用户的数据,但您只能获取当前用户。
为了获取注册用户的数据,您需要将其存储到数据库中然后检索整个数组,或者您可以保留认证标志,如果用户在您的所有用户表中注册,则可以设置或重置反之亦然。
如@Jason所述,您可以尝试使用Admin SDK,因为listAllUsers()可以检索批量用户数据的文档中提到了它。
详细说明可以在IN THIS THREAD.
答案 3 :(得分:0)
正如之前@Sam所指出的,您可以从Firebase DB中获取详细信息。因此,每次用户注册时,都要将他的FirebaseUser详细信息(最好是他的UID,如果需要,将其他详细信息存储在其下)添加到数据库中。然后在下一个活动中简单地将一个监听器放在数据库上,您就可以获取所有注册用户的列表。
答案 4 :(得分:0)
const allUsers: firebase.auth.UserRecord[] = [];
const listAllUsers = async (nextPageToken?: string) => {
const res = await firebase.auth().listUsers(1000, nextPageToken);
allUsers.push(...res.users);
if (res.pageToken) {
await listAllUsers(res.pageToken);
}
};
await listAllUsers();
console.log(allUsers)