Mat*_*ner 6 firebase firebase-authentication
由于我可能滥用匿名身份验证(请参阅如何防止Firebase匿名用户令牌过期)我的应用程序中有很多匿名用户,我实际上并不想要.
我看不到批量删除这些用户的任何方法.我是否必须逐个手动完成?反正有没有使用API来访问用户帐户并为当前用户以外的用户操作它们?
Firebase控制台无法批量删除用户.
没有用于批量删除用户的API.
但是有管理API允许您删除用户帐户.请参阅https://firebase.google.com/docs/auth/admin/manage-users#delete_a_user
此代码示例使用适用于Node.js的Firebase Admin SDK,并将删除没有提供程序数据的任何用户,这意味着该用户是匿名的:
function deleteAnonymousUsers(nextPageToken) {
adminApp
.auth()
.listUsers(20, nextPageToken)
.then(function(listUsersResult) {
listUsersResult.users.forEach(function(userRecord) {
// updated condition from = 0 to === 0
if (userRecord.providerData.length === 0) { //this user is anonymous
console.log(userRecord); // do your delete here
adminApp.auth().deleteUser(userRecord.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.
deleteAnonymousUsers(listUsersResult.pageToken);
}
})
.catch(function(error) {
console.log('Error listing users:', error);
});
}
Run Code Online (Sandbox Code Playgroud)
如果您需要从 Firebase 控制台 UI 中删除匿名用户,但又不想经历逐一点击 250 个用户的麻烦,您可以在控制台中显示用户表的屏幕上使用以下代码:
rows = Array.from(document.querySelectorAll('td.auth-user-identifier-cell')).map(td => td.parentNode).filter((tr) => tr.innerText.includes('anonymous'))
var nextTick = null
function openContextMenu(tr) {
console.log('openning menu')
tr.querySelector('.edit-account-button').click()
nextTick = deleteUser
}
function deleteUser() {
console.log('deleting user')
document.querySelector('.cdk-overlay-connected-position-bounding-box button:last-of-type').click()
nextTick = confirmDelete
}
function confirmDelete() {
console.log('confirming action')
document.querySelector('.cdk-global-overlay-wrapper .confirm-button').click()
nextTick = getUser
}
function getUser() {
console.log('getting user')
openContextMenu(rows.shift())
}
nextTick = getUser
step = 500
setInterval(() => {
nextTick()
}, step)
Run Code Online (Sandbox Code Playgroud)
此代码本质上选择包含匿名用户的所有行,并模拟单击三个点、删除帐户并在出现的模式中确认操作的过程。
运行脚本之前,请确保在表页脚中选择每页 250 行。删除一个页面上的所有匿名用户后,您需要手动转到下一页并在另一个页面中重新运行脚本或代码tick来为您分页。
请记住,删除一个用户需要 1.5 秒(您可以使用step变量调整此值,但由于潜在的 UI 动画,我不建议低于 500 毫秒)。
此外,该脚本在后台运行,因此您可以在运行时执行多任务,例如观看 YouTube 视频。
我只是想添加一个我刚刚用来(排序)批量删除的方法。主要是因为我做了之后觉得自己很聪明,而我没有那么聪明。
我下载了一个鼠标自动化应用程序,它可以让您记录鼠标点击,然后自动重播。我刚刚在弹钢琴时删除了近 1000 个用户,哈哈。
我用了 Macro Recorder,它的效果非常棒。刚刚在我删除用户的控制台记录了几次迭代,设置为重复500次就走开了。
我知道这不是一个非常技术性的答案,但它为我节省了几个小时的单调鼠标点击,所以希望其他寻找批量删除方法的人也能从中受益。我讨厌没有批量删除的事实,真的需要一种方法来摆脱它。只用了大约 20 次手动删除就意识到有应用程序可以做我正在做的事情。