从firebase auth控制台删除所有用户

Max*_*s S 39 firebase firebase-authentication firebase-console

有没有简单的方法从firebase控制台删除所有注册用户?例如,我从我的开发环境创建了一百个用户,现在我想删除所有用户.

AAv*_*rin 80

在更新的答案中,您现在可以使用firebase管理工具,但如果您不想要 - 这里有一些更加扎实的javascript来删除网络中的用户:

var intervalId;

var clearFunction = function() {
  if ($('[aria-label="Delete account"]').size() == 0) {
    console.log("interval cleared")
    clearInterval(intervalId)
    return
  }
  $('[aria-label="Delete account"]')[0].click();
  setTimeout(function () {
     $(".md-raised:contains(Delete)").click()
  }, 1000);
};

intervalId = setInterval(clearFunction, 3000)
Run Code Online (Sandbox Code Playgroud)

只需在开发人员工具中运行它

  • 你应该得到诺贝尔奖这个答案! (8认同)
  • 这样可行,但确保打开选项卡不会在其运行时切换到另一个选项卡 (4认同)
  • 也为我工作。谢谢。很遗憾,这必须是解决方法。 (3认同)
  • 这个脚本比其他脚本好! (3认同)
  • 我什至不知道我可以在控制台中运行Javascript。得到教训。也学习其他东西的基础。 (2认同)
  • 对我不起作用。只是说“间隔已清除” (2认同)

Ion*_*zău 33

因为我非常懒于点击UI中的按钮和元素,所以我设置了一个小客户端脚本:

$('[aria-label="Delete account"]').click()
setTimeout(function () {
   $(".md-raised:contains(Delete)").click()
}, 1000);
Run Code Online (Sandbox Code Playgroud)

您可能需要多次运行它,但它比浪费时间手动点击屏幕上的内容要好得多.

  • @ mjpablo23打开浏览器开发人员工具(右键单击页面和`Inspect`或`Inspect Element`),然后转到`Console`选项卡并粘贴代码并按*return*/*enter*键. (3认同)

www*_*.tk 17

这是我的自行车:

setInterval(() => {
  $('[aria-label="Delete account"]').first().click()
  setTimeout(()=>{
    $(".md-raised:contains(Delete)").click()
  }, 100)
}, 2000);
Run Code Online (Sandbox Code Playgroud)

旨在避免delete经常调用端点,因为谷歌失败并404出现错误.

  • @gbhall 啊哈哈哈,很高兴你玩得开心。 (3认同)

Sun*_*tam 17

使用 Firebase Admin SDK 的完整解决方案

使用 Firebase Admin SDK非常简单,也是对 Firebase 数据执行此类任务的推荐方式。此解决方案使用开发人员控制台的其他临时解决方案不同

我只是整理了一个 Node.js 脚本来删除 Firebase 身份验证中的所有用户。我已经通过删除 ~10000 个用户对其进行了测试。我只是运行了以下 Node.js 代码。

设置 Firebase Admin SDK

新建一个文件夹。在终端中运行以下命令

npm init
sudo npm install firebase-admin --save
Run Code Online (Sandbox Code Playgroud)

现在index.js在这个文件夹中创建一个文件。

要遵循的步骤:

  • 转到您的 Firebase 项目 -> 项目设置 -> 服务帐户。
  • 单击Generate new Private Key以下载 JSON 文件。复制 JSON 文件的路径并将其替换为服务帐户私钥 json 文件路径中的以下代码。
  • 另外,databaseURL从设置页面复制。在代码中替换它。
  • 将代码复制并粘贴到index.js.
  • 在终端运行node index.js。观看混乱!
var admin = require('firebase-admin');

var serviceAccount = require("/path/to/service/accounts/private/key/json/file");

admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
    databaseURL: "/url/to/your/database"
});

function deleteUser(uid) {
    admin.auth().deleteUser(uid)
        .then(function() {
            console.log('Successfully deleted user', uid);
        })
        .catch(function(error) {
            console.log('Error deleting user:', error);
        });
}

function getAllUsers(nextPageToken) {
    admin.auth().listUsers(100, nextPageToken)
        .then(function(listUsersResult) {
            listUsersResult.users.forEach(function(userRecord) {
                uid = userRecord.toJSON().uid;
                deleteUser(uid);
            });
            if (listUsersResult.pageToken) {
                getAllUsers(listUsersResult.pageToken);
            }
        })
        .catch(function(error) {
            console.log('Error listing users:', error);
        });
}

getAllUsers();
Run Code Online (Sandbox Code Playgroud)


Yam*_*TBY 17

对于新的 Firebase 更新 (07.05.2021)

尝试使用此代码获取最新的 Firebase 更新。打开控制台,粘贴此代码并按回车键!!!

setInterval(() => {
    document.getElementsByClassName('edit-account-button mat-focus-indicator mat-menu-trigger mat-icon-button mat-button-base')[0].click()
    document.getElementsByClassName('mat-focus-indicator mat-menu-item ng-star-inserted')[2].click()
    document.getElementsByClassName('confirm-button mat-focus-indicator mat-raised-button mat-button-base mat-warn')[0].click()
}, 1000)
Run Code Online (Sandbox Code Playgroud)

  • 这很好用,谢谢!请注意:如果列表中有匿名帐户,请将第二个“getElementsByClassName”中的索引从 2 更改为 1。您也可以设置更短的间隔,我使用了 500。 (5认同)
  • 你是最棒的 :)。这适用于 2021 年 4 月 21 日 (2认同)
  • @格雷格萨德茨基 2022* (2认同)
  • 这是一些漂亮的黑客行为。2022 年 2 月 21 日仍在工作。 (2认同)

Fra*_*len 15

这里有一个firebaser

更新2016-11-08 原始答案如下

我们刚刚发布了Firebase Admin SDK,它支持管理用例,例如删除用户帐户而不要求用户先登录.

原始答案

Firebase身份验证中目前没有API可以删除用户而无需该用户登录.我们知道这限制了我们API的可用性,并且正在努力在将来的版本中添加此类功能.但是像往常一样,我们没有提供有关功能何时可用的具体时间表.

目前你唯一的工作是:

  • 以应用程序中的每个测试用户身份登录并从中删除用户
  • 从Firebase控制台依次删除每个用户

  • 如果您"转换"+点击"删除帐户",是否可以考虑删除Firebase控制台中的"您确定提示"吗?这将模仿数据库中的行为,并将显着加快速度. (15认同)

小智 6

稍微增加了你的助手脚本.

德国firebase网站版本:

$('[aria-label="Nutzermenü öffnen"]').click();
$('[aria-label="Konto löschen"]').click();
for (i = 0; i < 20; i++) {
  setTimeout(() => {
    $('.md-raised:contains(Löschen)').click();
  }, i * 200);
}
Run Code Online (Sandbox Code Playgroud)

对于英文版,只需替换文本.这样,您可以在执行后删除20个或更多用户.


小智 5

2020 年 11 月 16 日成功使用此代码:

setInterval(function () {
    $('[aria-label="View more options"]')[0].click()
    document.querySelectorAll('.mat-menu-item')[2].click()
    document.querySelector('.confirm-button').click()
}, 1000);
Run Code Online (Sandbox Code Playgroud)


big*_*d12 5

测试日期:2021 年 10 月 10 日

这将单击上下文菜单中的最后一个按钮,该按钮始终是“删除”按钮,因此它适用于所有帐户类型
setInterval(() => {
    document.getElementsByClassName('edit-account-button mat-focus-indicator mat-menu-trigger mat-icon-button mat-button-base')[0].click()
    var buttons = document.getElementsByClassName('mat-focus-indicator mat-menu-item ng-star-inserted');
    buttons.item(buttons.length - 1).click();
    document.getElementsByClassName('confirm-button mat-focus-indicator mat-raised-button mat-button-base mat-warn')[0].click()
}, 1000);
Run Code Online (Sandbox Code Playgroud)