由於我可能濫用匿名身份驗證(請參閱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