如何列出使用firebase admin sdk的所有用户

如何列出使用firebase admin sdk的所有用户,firebase,firebase-authentication,firebase-admin,Firebase,Firebase Authentication,Firebase Admin,是否有方法列出使用firebase admin sdk的所有用户?文档仅显示通过uid或电子邮件获取一个用户。更新正如@Webp在他们的回答中所说,现在管理SDK中有一个 原始答复: 没有用于从Firebase Admin SDK检索用户列表的公共API 处理此场景的典型方法是在Firebase数据库中保留相关用户信息的列表。有关更多信息,请参阅此原始问题:这不是一个好的解决方案,但您可以使用Firebase CLI导出用户数据并与应用程序集成 作者:导出 firebase验证:导出帐户\u文件

是否有方法列出使用firebase admin sdk的所有用户?文档仅显示通过uid或电子邮件获取一个用户。

更新正如@Webp在他们的回答中所说,现在管理SDK中有一个

原始答复:

没有用于从Firebase Admin SDK检索用户列表的公共API


处理此场景的典型方法是在Firebase数据库中保留相关用户信息的列表。有关更多信息,请参阅此原始问题:

这不是一个好的解决方案,但您可以使用Firebase CLI导出用户数据并与应用程序集成

作者:导出

firebase验证:导出帐户\u文件--格式=文件\u格式


最新的
firebase admin sdk
(从现在的版本
5.4.2
)有
listUsers
API可以实现这一点。例子是

要添加到示例中的一点是,必须省略
nextPageToken
,或者使用有效的用户ID。(在我看来,这在示例或API文档中都不明显。)

您可以使用AdminSDK中提供的
auth().listUsers()
方法。详细的示例代码可以在这里找到。

2020年3月,在与文档和各种帖子进行了大量斗争后,我发现了以下作品:

const admin = require("firebase-admin");
const serviceAccount = require('./serviceAccount.json'); // see notes below about this.

const listAllUsers = () => {

    const app = admin.initializeApp({
        databaseURL: 'https://your-project-name.firebaseio.com',
        credential: admin.credential.cert(serviceAccount) <-- see notes below about this
    });

    app.auth().listUsers(1000) // lists up to 1000 users
        .then((listUsersResult) => {

            let users = JSON.stringify(listUsersResult);

            const date = new Date();
            const day = date.getDate();
            const month = date.getMonth() + 1;

            fs.writeFileSync(__dirname + `/../my-backups/authentication-backup_${day}_${month}_2020.json`, users);
        })
        .catch(function (error) {
            console.log('Oh no! Firebase listUsers Error:', error);
        });
}

如果你还没有生成一个,我通过以下方式得到了我的:


Firebase Console=>Project Settings=>Service Accounts=>Generate New Private Key

这是唯一有效的解决方案,对nextPageToken的评论真是太棒了。真的。
{
  "type": "service_account",
  "project_id": "my-project-id",
  "private_key_id": "xxxxxxxxxxxxxxxxxxx",
  "private_key": "-----BEGIN PRIVATE KEY-----\nMxxxxxxxxxxxxxxzuUA=\n-----END PRIVATE KEY-----\n",
  "client_email": "firebase-adminsdk-em4gz@my-project-name-email-thing.iam.gserviceaccount.com",
  "client_id": "0000000000000000000",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-em4gz%40my-proj-name.iam.gserviceaccount.com"
}