LoginSignup
0
2

More than 1 year has passed since last update.

Firebase Admin SDKを使用してFirebase Authenticationの匿名ユーザーを一括削除する方法

Posted at

概要

Firebase Authentication の匿名認証を使っていると際限なく匿名ユーザーが増えていってしまう。
匿名ユーザーの上限は1億個なので通常は放置しても問題無いと思われるが、もしもの時を考えて一括で削除する方法を調べてみた。

環境

  • ローカル環境
  • Windows 10
  • Node.js (v18.14.2)

事前準備

[firebase]>[プロジェクトの設定]>[サービスアカウント]>[Firebase Admin SDK] から新しい秘密鍵を生成。
分かりやすい名前に変更して(今回はkeyFile.jsonとする)my-appフォルダに置く。
以降の作業はmy-appフォルダ内で行うこととする。

作業

必要なものをインストール

npm install firebase-admin --save
npm install readline-sync

readline-syncは省略可。
削除の最終確認をしたいので追加している。

コードを書く

index.js
const admin = require("firebase-admin");
const { getAuth } = require('firebase-admin/auth');
const readlineSync = require('readline-sync');
const serviceAccount = require("./keyFile.json");
admin.initializeApp({ credential: admin.credential.cert(serviceAccount) });
const list_anonymous = [];

listAllUsers();

function listAllUsers(nextPageToken){
  getAuth()
    .listUsers(1000, nextPageToken)
    .then((listUsersResult) => {
      listUsersResult.users.forEach((userRecord) => {
        if(userRecord.providerData.length===0){
          list_anonymous.push(userRecord.uid);
        }
      });
      if (listUsersResult.pageToken) {
        listAllUsers(listUsersResult.pageToken);
      }else{
        if(list_anonymous.length===0){
          console.log('現在の匿名ユーザーは0人です。');
          return;
        }
        console.log('匿名ユーザーの一覧');
        list_anonymous.forEach(id=>{
          console.log('id: '+id);
        });
        if(readlineSync.keyInYN('delete this users?')){
          deleteUsers();
        }else{
          console.log('終了');
        }
      }
    })
    .catch((error) => {
      console.log('Error listing users:', error);
    });
};

function deleteUsers(){
  getAuth()
    .deleteUsers(list_anonymous)
    .then(()=>{
      console.log('ooo 削除完了 ooo');
    })
    .catch(error=>{
      console.log(error);
      console.log('xxx 削除失敗 xxx');
    });
}

匿名ユーザーはproviderDataの長さが0となるのでそれを利用して抽出を行っている。

実行

コマンドプロンプト等でnode index.js
最終確認されるのでyで実行。

参考URL

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2