Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在web中删除Firebase中未验证的电子邮件?_Node.js_Firebase_Firebase Authentication - Fatal编程技术网

Node.js 如何在web中删除Firebase中未验证的电子邮件?

Node.js 如何在web中删除Firebase中未验证的电子邮件?,node.js,firebase,firebase-authentication,Node.js,Firebase,Firebase Authentication,我创建了一个功能,可以在Firebase的Angular 6中注册电子邮件和密码 然后我发送一封电子邮件来验证电子邮件,有时用户会去他的电子邮件进行验证 听起来不错,其他人不去验证电子邮件,所以它仍然在我的Firebase中 我希望Firebase中的任何功能能够自动删除超过两天未经验证的电子邮件。对于客户端来说,绝对没有办法做到这一点。为此,您必须使用NodeJS Firebase管理SDK 我不认为有一个直接的方法来做这件事。您可以尝试将listUsers方法与deleteUser方法链接起

我创建了一个功能,可以在Firebase的Angular 6中注册电子邮件和密码

然后我发送一封电子邮件来验证电子邮件,有时用户会去他的电子邮件进行验证

听起来不错,其他人不去验证电子邮件,所以它仍然在我的Firebase中


我希望Firebase中的任何功能能够自动删除超过两天未经验证的电子邮件。

对于客户端来说,绝对没有办法做到这一点。为此,您必须使用NodeJS Firebase管理SDK

我不认为有一个直接的方法来做这件事。您可以尝试将
listUsers
方法与
deleteUser
方法链接起来。在删除用户之前,您可以检查该用户是否未经验证

一旦这个脚本准备好了,只需将它部署为Firebase云函数

我不知道如何每两天运行一次

我不确定这是否有效。但您可能想尝试一下:

function listAllUsers(nextPageToken) {
  // List batch of users, 1000 at a time.
  admin.auth().listUsers(1000, nextPageToken)
    .then(function(listUsersResult) {
      listUsersResult.users.forEach(function(userRecord) {
        const user = userRecord.toJSON();
        if (!user.emailVerified) {
          admin.auth().deleteUser(user.uid)
            .then(function() {
              console.log("Successfully deleted user");
            })
            .catch(function(error) {
              console.log("Error deleting user:", error);
            });
        }
      });
      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();

对于客户来说,绝对没有办法做到这一点。为此,您必须使用NodeJS Firebase管理SDK

我不认为有一个直接的方法来做这件事。您可以尝试将
listUsers
方法与
deleteUser
方法链接起来。在删除用户之前,您可以检查该用户是否未经验证

一旦这个脚本准备好了,只需将它部署为Firebase云函数

我不知道如何每两天运行一次

我不确定这是否有效。但您可能想尝试一下:

function listAllUsers(nextPageToken) {
  // List batch of users, 1000 at a time.
  admin.auth().listUsers(1000, nextPageToken)
    .then(function(listUsersResult) {
      listUsersResult.users.forEach(function(userRecord) {
        const user = userRecord.toJSON();
        if (!user.emailVerified) {
          admin.auth().deleteUser(user.uid)
            .then(function() {
              console.log("Successfully deleted user");
            })
            .catch(function(error) {
              console.log("Error deleting user:", error);
            });
        }
      });
      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();

我需要确认函数请如何使用NodeJS Firebase管理SDK进行此操作。我需要确认函数请如何使用NodeJS Firebase管理SDK进行此操作。