无法获取使用 Admin SDK Firebase 的用户列表

Jam*_*mes 2 node.js firebase firebase-authentication google-cloud-functions firebase-admin

如果我添加到 Firebase 云函数,则无法获得用户列表。我尝试了很多东西,并遵循了 firebase 文档的指南,但它一直在运行,但从未加载。

exports.listAllUsers = functions.https.onRequest((data, context) => {
  // List all users

  return listAllUsers();
});

function listAllUsers() {
  // List batch of users, 1000 at a time.
  var allUsers = [];

  return admin.auth().listUsers()
    .then(function (listUsersResult) {
      listUsersResult.users.forEach(function (userRecord) {
        // For each user
        var userData = userRecord.toJSON();
        allUsers.push(userData);
      });
        return allUsers
    })
    .catch(function (error) {
      console.log("Error listing users:", error);
    });

}
Run Code Online (Sandbox Code Playgroud)

Fra*_*len 7

您似乎混淆了两种类型的 Cloud 函数:

  1. 可调用函数,您使用 Firebase SDK 从您的应用调用。
  2. 常规 HTTP 函数,您从应用程序调用客户端平台的常规 HTTP 客户端 API。

使用常规 HTTPS 请求调用的 Cloud Functions

当您将函数声明为 时functions.https.onRequest,您需要将响应写入响应对象。根据有关通过 HTTP 请求调用函数文档,您需要执行以下操作:

exports.listAllUsers = functions.https.onRequest((req, res) => {
  // List batch of users, 1000 at a time.
  var allUsers = [];

  return admin.auth().listUsers()
    .then(function (listUsersResult) {
      listUsersResult.users.forEach(function (userRecord) {
        // For each user
        var userData = userRecord.toJSON();
        allUsers.push(userData);
      });
      res.status(200).send(JSON.stringify(allUsers));
    })
    .catch(function (error) {
      console.log("Error listing users:", error);
      res.status(500).send(error);
    });
});
Run Code Online (Sandbox Code Playgroud)

调用使用 Firebase SDK 调用的 Cloud Functions

如果您想使用 Firebase SDK 从您的应用程序中调用您的 Cloud Functions 函数,您需要将您的函数声明为:

exports.listAllUsers = functions.https.onCall((data, context) => {
  // List all users

  return listAllUsers();
});
Run Code Online (Sandbox Code Playgroud)