管理系のスクリプトを書くときに、firebase-adminで操作をするけど、よく調べ直すのでまとめてみた。
元情報は、以下辺り。
- Firebase Guid: Manage Users | Firebase
- API Reference: Auth | Admin Node.js SDK | Firebase
ユーザの一覧を取得
import * as admin from "firebase-admin"; // 初期設定は略 async function fetchAllAuthUsers() { const result: admin.auth.UserRecord[] = []; // ユーザ一覧の取得は、1000件まで let listUsersResult = await admin.auth().listUsers(1000); result.push(...listUsersResult.users); // 1001件目以降は、pageTokenを利用して取得する while (!!listUsersResult.pageToken) { listUsersResult = await admin.auth().listUsers(1000, listUsersResult.pageToken); result.push(...listUsersResult.users); } return result; } const user = await fetchAllAuthUsers();
取得するUserRecordは、以下のReferenceに記載。
ユーザの取得
import * as admin from "firebase-admin"; // 初期設定は略 // UIDで取得 const userRecord = admin.auth().getUser(uid);
ユーザの作成
import * as admin from "firebase-admin"; // 初期設定は略 const user = { email: 'user@example.com', emailVerified: false, phoneNumber: '+11234567890', password: 'secretPassword', displayName: 'John Doe', photoURL: 'http://www.example.com/12345678/photo.png', disabled: false }; await admin.auth().createUser(user);
ユーザの更新
import * as admin from "firebase-admin"; // 初期設定は略 // 更新する情報。指定してないフィールドは変更されない。 const updateInfo = { email: 'user@example.com', emailVerified: false, phoneNumber: '+11234567890', password: 'secretPassword', displayName: 'John Doe', photoURL: 'http://www.example.com/12345678/photo.png', disabled: false }; await admin.auth().updateUser(uid, updateInfo)
ユーザの削除
import * as admin from "firebase-admin"; // 初期設定は略 await admin.auth().deleteUser(uid);
以上!!