2016-09-22 34 views

回答

4

Firebase控制檯無法批量刪除用戶。

沒有API批量刪除用戶。

但有一個管理API允許您刪除用戶帳戶。請參閱https://firebase.google.com/docs/auth/admin/manage-users#delete_a_user

+0

無賴。我很高興我們只有100個虛假用戶,而不是10000! :-) –

+0

你知道管理API是否在工作嗎? –

+0

這個Frank的更新? 將不勝感激。謝謝 – Atu

3

我只是想添加一個我剛纔使用的(排序)批量刪除方法。主要是因爲我做這件事後感覺很聰明,而我並不聰明。

我下載了一個鼠標自動化應用程序,可讓您記錄鼠標點擊,然後自動重播。彈鋼琴時我剛剛刪除了近1000名用戶。

我用Macro Recorder,它的工作就像一個魅力。剛剛在刪除用戶的控制檯中記錄了一些迭代,將其設置爲重複500次並走開。

我知道這不是一個非常技術性的答案,但它節省了我小時單調的鼠標點擊,所以希望別人正在尋找批量刪除的方式也會從中受益。我討厭沒有批量刪除的事實,並且真的需要一種解決方法。它只花了大約20次手動刪除來實現有可以做我正在做的事情的應用程序。

1

我今天遇到同樣的問題,我找到了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()); 
}); 
1

我有同樣的問題。因爲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. 
0

沒有任何答案實際上給出了關於如何知道用戶是匿名的任何建議,所以我想我會添加一些代碼。此代碼示例使用適用於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); 
    }); 
}