有没有一种简单的方法可以从Firebase控制台中删除所有已注册用户?例如,我在开发环境中创建了一百个用户,现在我想删除它们所有。
有没有一种简单的方法可以从Firebase控制台中删除所有已注册用户?例如,我在开发环境中创建了一百个用户,现在我想删除它们所有。有没有一种简单的方法可以从Firebase控制台中删除所有已注册用户?例如,我在开发环境中创建了一百个用户,现在我想删除它们所有。
有没有一种简单的方法可以从Firebase控制台中删除所有已注册用户?例如,我在开发环境中创建了一百个用户,现在我想删除它们所有。在更新的回答中,现在你可以使用Firebase管理工具,但如果你不想使用,这里是一些更为可靠的JavaScript代码,用于在Web上删除用户:
var intervalId;
var clearFunction = function() {
var size = $('[aria-label="Delete account"]').size()
if (size == 0) {
console.log("interval cleared")
clearInterval(intervalId)
return
}
var index = Math.floor(Math.random() * size)
$('[aria-label="Delete account"]')[index].click();
setTimeout(function () {
$(".md-raised:contains(Delete)").click()
}, 1000);
};
intervalId = setInterval(clearFunction, 300)
只需在开发者工具中运行它
尝试使用以下代码进行最新的Firebase更新。 打开控制台,粘贴此代码并按回车键!!!
setInterval(() => {
document.getElementsByClassName('edit-account-button mat-focus-indicator mat-menu-trigger mat-icon-button mat-button-base')[0].click()
Array.from(document.getElementsByClassName('mat-focus-indicator mat-menu-item ng-star-inserted')).at(-1).click();
document.getElementsByClassName('confirm-button mat-focus-indicator mat-raised-button mat-button-base mat-warn')[0].click()
}, 1000)
$('[aria-label="Delete account"]').click()
setTimeout(function () {
$(".md-raised:contains(Delete)").click()
}, 1000);
你可能需要多次运行它,但这比手动在屏幕上点击东西浪费时间要好得多。
使用Firebase Admin SDK非常容易,也是在Firebase数据上执行此类任务的推荐方法。这个解决方案不同于使用开发者控制台的其他临时解决方案。
我刚刚编写了一个Node.js脚本,用于删除Firebase身份验证中的所有用户。我已经通过删除大约10000个用户来测试它。我只需要运行以下Node.js代码即可。
创建一个新文件夹。在终端中运行以下命令:
npm init
sudo npm install firebase-admin --save
现在在该文件夹中创建一个 index.js
文件。
生成新的私有密钥
以下载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();
setTimeout(() => {
getAllUsers(listUsersResult.pageToken)
}, 6000);
- Karol BesetInterval(() => {
$('[aria-label="Delete account"]').first().click()
setTimeout(()=>{
$(".md-raised:contains(Delete)").click()
}, 100)
}, 2000);
旨在避免频繁调用 delete
端点,因为 Google 会返回 404
错误。
我们刚刚发布了Firebase管理SDK,它支持管理用例,例如删除用户帐户而无需该用户先进行登录。
原始回答
当前Firebase身份验证中没有API可让您在不要求该用户登录的情况下删除用户。我们知道这限制了我们的API的可用性,并正在努力在未来发布中添加此功能。但通常情况下,我们不会提供特定功能可用的时间表。
目前你唯一的解决方法是:
admin.auth().deleteUser(uid);
操作? - Snewedon$('[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);
}
只需替换文本即可获得英文版本。 这样一来,执行后就可以删除20个或更多用户。
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);
我在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);
已更新至2022年3月,可使用“加载下一页记录”功能
setInterval(() => {
var RecordsCount = document.getElementsByClassName('edit-account-button mat-focus-indicator mat-menu-trigger mat-icon-button mat-button-base').length;
if (RecordsCount>0)
{
document.getElementsByClassName('edit-account-button mat-focus-indicator mat-menu-trigger mat-icon-button mat-button-base')[0].click()
let deleteButtonPosition = document.getElementsByClassName('mat-focus-indicator mat-menu-item ng-star-inserted').length - 1
document.getElementsByClassName('mat-focus-indicator mat-menu-item ng-star-inserted')[deleteButtonPosition].click()
document.getElementsByClassName('confirm-button mat-focus-indicator mat-raised-button mat-button-base mat-warn')[0].click()
}
else
{
//reload more records
$('[aria-label="Reload"]').first().click();
}
}, 800);