由于我可能滥用匿名身份验证(请参阅How to prevent Firebase anonymous user token from expiring),我的应用中有很多匿名用户,我实际上并不想要。如何批量删除Firebase匿名用户
我看不到任何方式批量删除这些用户。我必须一个接一个手动吗?无论如何,使用API来访问用户帐户并为当前用户以外的用户操作它们?
由于我可能滥用匿名身份验证(请参阅How to prevent Firebase anonymous user token from expiring),我的应用中有很多匿名用户,我实际上并不想要。如何批量删除Firebase匿名用户
我看不到任何方式批量删除这些用户。我必须一个接一个手动吗?无论如何,使用API来访问用户帐户并为当前用户以外的用户操作它们?
Firebase控制台无法批量删除用户。
没有API批量删除用户。
但有一个管理API允许您删除用户帐户。请参阅https://firebase.google.com/docs/auth/admin/manage-users#delete_a_user
我只是想添加一个我刚才使用的(排序)批量删除方法。主要是因为我做这件事后感觉很聪明,而我并不聪明。
我下载了一个鼠标自动化应用程序,可让您记录鼠标点击,然后自动重播。弹钢琴时我刚刚删除了近1000名用户。
我用Macro Recorder,它的工作就像一个魅力。刚刚在删除用户的控制台中记录了一些迭代,将其设置为重复500次并走开。
我知道这不是一个非常技术性的答案,但它节省了我小时单调的鼠标点击,所以希望别人正在寻找批量删除的方式也会从中受益。我讨厌没有批量删除的事实,并且真的需要一种解决方法。它只花了大约20次手动删除来实现有可以做我正在做的事情的应用程序。
我今天遇到同样的问题,我找到了Firebase Admin SDK。我使用Node.js,它很容易安装,所以你可以尝试下面的代码。这不是我所知道的完整答案,但可以构建自己的脚本/应用程序来删除存储的uid。但是,无法检索列表,因此每次创建匿名帐户时都必须以某种方式构建列表。
首先,下载可通过Firebase控制台(项目设置)完成的'serviceAccountKey.json'。在我的情况下,我将下载文件重命名为更友好的名称并保存到文档文件夹中。
console.firebase.google.com/project/ 为yourprojectname /设置/ serviceaccounts/adminsdk
相关链接:
然后,玩弄使用Windows cmd.exe或任何其他外壳。 'npm install -g'将firebase-admin全局安装在您的机器中。
$ npm install firebase-admin -g
$ node
> var admin = require("firebase-admin");
> admin.initializeApp({
credential: admin.credential.cert("./documents/yourprojectname-firebase-admin.json"),
databaseURL: "https://yourprojectname.firebaseio.com"
});
> var db = admin.database();
// Of course use an existent UID of your choice
> admin.auth().getUser('2w8XEVe7qZaFn2ywc5MnlPdHN90s').then((user) => console.log
(user))
> admin.auth().deleteUser('2w8XEVe7qZaFn2ywc5MnlPdHN90s').then(function() {
console.log("Successfully deleted user");
}).catch(function(error) {
console.log("Error deleting user:", error);
});
// To get access to some key/values in your Database:
> var ref = db.ref("users/1234");
> ref.once("value", function(snapshot) {
console.log(snapshot.val());
});
我有同样的问题。因为Firebase不提供任何API来删除批量用户,但这是我删除所有匿名用户的方式。
下载所有通过火力工具的用户为JSON
火力AUTH:出口用户--format = JSON
https://firebase.google.com/docs/cli/auth#file_format
你可以写一个火力点云功能触发或写操作的方法来触发
导入JSON文件到您的文件,
const Users = require('./users.json'); // ES5 <br>
import Users from './users.json'); // ES6 <br>
通常匿名用户没有电子邮件,所以很容易删除不具有电子邮件ID
Users.users.map(user => {
setTimeout(() => {
admin.auth().deleteUser(user.localId).then(() =>{
console.log("Successfully deleted user");
})
.catch((error) => {
console.log("Error deleting user:", error);
});
}, 20000);
});
不要试图第二次减少超时,如果你没有,你可能面临错误的记录。
Error deleting user: { Error: www.googleapis.com network timeout. Please try again.
没有任何答案实际上给出了关于如何知道用户是匿名的任何建议,所以我想我会添加一些代码。此代码示例使用适用于Node.js的Firebase Admin SDK:
function deleteAnonymousUsers(nextPageToken) {
adminApp
.auth()
.listUsers(20, nextPageToken)
.then(function(listUsersResult) {
listUsersResult.users.forEach(function(userRecord) {
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.
listAllUsers(listUsersResult.pageToken);
}
})
.catch(function(error) {
console.log('Error listing users:', error);
});
}
无赖。我很高兴我们只有100个虚假用户,而不是10000! :-) –
你知道管理API是否在工作吗? –
这个Frank的更新? 将不胜感激。谢谢 – Atu