检索已使用Firebase身份验证注册的用户列表

时间:2017-10-25 18:35:54

标签: android firebase firebase-authentication

我正在使用firebase创建一个Android聊天应用程序。到目前为止,我已经制作了一个通用的群聊应用。现在我想让它成为一个单独的聊天应用程序,它将有一个用户列表,当我们从该列表中选择一个人时,我们可以与他/她单独聊天。但是,我无法从Firebase获取此用户列表。我在Firebase Auth UI中保留了Google登录和电子邮件登录选项。任何帮助将不胜感激

5 个答案:

答案 0 :(得分:3)

如果您需要按uidemailphoneNumber查找用户,则可以使用管理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。

通过https://firebase.google.com/docs/auth/admin/manage-users

答案 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)