Firexportガイド
Firebase Authentication のユーザーをエクスポートする方法
Firebase Authentication のユーザー(Users)タブにはプロジェクトのすべてのアカウントが表示されますが、ダウンロードはできません。そこにあるメニューは 1 つだけで、中身はパスワード ハッシュ パラメータです。ユーザーをファイルとして取り出す方法は 3 つあります。どれが合うかはファイルの用途によります。読む・共有する・メールを送るための一覧か、別のプロジェクトへの移行かです。
2026年10月7日 更新。 方法 1 の拡張機能 Firexport は私たちのものです。方法 2 と 3 には不要です。
結論から言うと
| 1. コンソール + 拡張機能 | 2. Firebase CLI | 3. Admin SDK スクリプト | |
|---|---|---|---|
| 準備 | Chrome 拡張機能をインストール | Node.js と Firebase CLI | Node.js と Google Cloud の認証情報 |
| 形式 | ヘッダー行つきの CSV、または JSON | ヘッダー行なしの CSV、または JSON | ヘッダー行つきの CSV(またはコードが書き出すもの) |
| 日時 | コンソールの日付(Advanced では ISO 8601) | エポックからのミリ秒 | ISO 8601 |
| カスタム クレーム | Advanced で含む | 含む | 含む |
| パスワード ハッシュ | 一切読み取らない | 含む(編集者またはオーナーのロール) | 含めない |
1. Firexport で Firebase コンソールからエクスポート
Firebase コンソールの Authentication > ユーザー(Users)には、ユーザーが表に 1 ページずつ表示されますが、それをダウンロードする手段はありません。 Firexport は、その表にエクスポート ボタンを追加する無料の Chrome 拡張機能です。
- Chrome ウェブストアから Firexport をインストールします。
- Firebase コンソールで Authentication を開き、ユーザー(Users)タブを開きます。
- ユーザーを追加(Add user)の右にあるエクスポートをクリックします。Firexport が表の全ページをたどり、CSV ファイルを 1 つダウンロードします。JSON にするには、ボタンの横の ⋮ メニューを開いて JSON にエクスポートを選びます。

ファイルに入るもの:
- 無料版では、ユーザーごとに 1 行、
uid、identifier、disabled、providers、creationTime、lastSignInTimeの列です。コンソールが表示する表そのままです。日付は時刻を含まないコンソールの表示形式で、プロバイダは Email や Google といった名前です。 - 有料プランの Firexport Advanced は、各ユーザーのレコード全体を Admin SDK の名前で書き出します。
email、emailVerified、displayName、phoneNumber、photoURL、providerData、customClaims、multiFactor、そして ISO 8601(UTC)の作成・ログイン・トークンの日時です。 - 列名はコンソールの言語にかかわらず英語なので、どのエクスポートも同じ列になります。
パスワード ハッシュは一切読み取らず、ユーザーのデータはブラウザの中にとどまります。ファイルはブラウザの中で作られ、ダウンロード先以外のどこにも送られません。すでにサインインしているコンソールのセッションで動くので、サービス アカウント キーも CLI の設定も不要です。Chrome とその他の Chromium ベースのブラウザで動きます。
ユーザーを 1 人ずつ確認する
1 人のユーザーを確認するには、その行にマウスを重ねます。行の操作の先頭にある情報アイコンで、レコード全体を載せたカードが開きます。表示名、メール確認済み、プロバイダ、ログインとトークンの日時、カスタム クレーム、第 2 要素です。カードのコピー アイコンで、このユーザーを JSON としてクリップボードにコピーできます。どちらも無料です。

CLI もサービス アカウント キーもなしで、Firebase のユーザーをコンソールからエクスポートしましょう。
2. Firebase CLI でエクスポート
Firebase CLI の auth:export コマンドは、プロジェクトのすべてのアカウントを 1 つのファイルにダウンロードします。auth:import でユーザーを別のプロジェクトに移すためのものなので、パスワード ハッシュとソルトも含まれます。そのため、このファイル自体が認証情報になります。共有ドライブやメールには置かないでください。ハッシュとソルトのフィールドを得るには、プロジェクトで編集者またはオーナーのロールを持つアカウントが必要です。
npm install -g firebase-tools
firebase login
firebase auth:export users.json --project your-project-id- ファイル名で形式が決まります:
users.jsonまたはusers.csv。 - CSV にはヘッダー行がありません。列の順序は固定です: UID、メールアドレス、メール確認済み、パスワード ハッシュ、ソルト、名前と写真の URL、Google・Facebook・Twitter・GitHub それぞれに 4 列、続いて作成日時、最終ログイン日時、電話番号、ほか数列。列の一覧は Google の auth:export のリファレンスにあります。日時はエポックからのミリ秒です。
- JSON は API 自身の名前のままです:
localId、createdAt、lastSignedInAt、providerUserInfo、そしてカスタム クレームを表すcustomAttributes(JSON 文字列)。 - エクスポートされるのは、Firebase の scrypt でハッシュされたパスワードだけです。別のアルゴリズムでインポートされ、その後一度もログインしていないユーザーは、ハッシュとソルトのフィールドが空になります。
ユーザーを移すには、元のプロジェクトのハッシュ パラメータ(Authentication > ユーザー(Users) > ⋮ > パスワード ハッシュ パラメータ(Password hash parameters))を指定して、ファイルを移行先のプロジェクトにインポートします。ユーザーは UID を保ったまま、同じパスワードでログインできます。
firebase auth:import users.json --project new-project-id \
--hash-algo=SCRYPT --hash-key=BASE64_SIGNER_KEY --salt-separator=BASE64_SALT_SEPARATOR \
--rounds=ROUNDS --mem-cost=MEM_COST3. Admin SDK スクリプトでエクスポート
独自の列が欲しい場合や、エクスポートをスケジュールで実行したい場合は、Firebase Admin SDK を使う短い Node.js スクリプトで、すべてのユーザーを一覧してヘッダー行つきの CSV を書き出せます。ユーザーを読み取れるアカウントが必要です。プロジェクトのオーナーか編集者、または Firebase Authentication 閲覧者のロールです。
- SDK をインストール:
npm install firebase-admin - ローカルの認証情報でサインイン:
gcloud auth application-default login。サーバーでは代わりにGOOGLE_APPLICATION_CREDENTIALSでサービス アカウント キーを指定します。 - 下のスクリプトを
export-users.mjsとして保存し、your-project-idを置き換えて、node export-users.mjsを実行します。
// Usage: node export-users.mjs → writes users.csv
import { writeFileSync } from 'node:fs';
import { initializeApp } from 'firebase-admin/app';
import { getAuth } from 'firebase-admin/auth';
initializeApp({ projectId: 'your-project-id' });
const auth = getAuth();
// listUsers returns at most 1,000 users per call, so follow the page token to the end.
const users = [];
let pageToken;
do {
const page = await auth.listUsers(1000, pageToken);
users.push(...page.users);
pageToken = page.pageToken;
} while (pageToken);
// One row per user. Times become ISO 8601. Password hashes are left out: this is a user list, not a backup.
const iso = (time) => (time ? new Date(time).toISOString() : '');
const rows = users.map((user) => ({
uid: user.uid,
email: user.email,
emailVerified: user.emailVerified,
displayName: user.displayName,
phoneNumber: user.phoneNumber,
disabled: user.disabled,
providers: user.providerData.map((provider) => provider.providerId).join(' '),
creationTime: iso(user.metadata.creationTime),
lastSignInTime: iso(user.metadata.lastSignInTime),
customClaims: user.customClaims ? JSON.stringify(user.customClaims) : '',
}));
// Quote any cell with a comma, a quote or a line break.
function cell(value) {
const text = value === undefined || value === null ? '' : String(value);
return /[",\r\n]/.test(text) ? `"${text.replaceAll('"', '""')}"` : text;
}
const columns = ['uid', 'email', 'emailVerified', 'displayName', 'phoneNumber', 'disabled',
'providers', 'creationTime', 'lastSignInTime', 'customClaims'];
const lines = [columns, ...rows.map((row) => columns.map((column) => row[column]))];
// The byte order mark at the start makes Excel read names in any language correctly.
writeFileSync('users.csv', '' + lines.map((line) => line.map(cell).join(',')).join('\r\n'));
console.log(`Wrote ${rows.length} users to users.csv`);- 呼び出しが「requires a quota project」(割り当てプロジェクトが必要)というエラーで失敗した場合は、
gcloud auth application-default set-quota-project your-project-idを実行して、もう一度試してください。 listUsersはユーザーを登録日順ではなく UID 順に返します。その順序が必要なら、行を並べ替えてください。- SDK がパスワード ハッシュを返すのは
firebaseauth.configs.getHashConfig権限を持つアカウントに対してだけで、このスクリプトはいずれにしてもハッシュを含めません。パスワードごとユーザーを移すには、方法 2 を使ってください。
FAQ
Firebase コンソールから Authentication のユーザーをエクスポートできますか?
いいえ。ユーザー(Users)タブにあるのは、検索ボックス、ユーザーを追加(Add user)、更新ボタン、そして項目がパスワード ハッシュ パラメータ(Password hash parameters)だけのメニューです。ユーザーをファイルに取り出すには、Firebase CLI(firebase auth:export)、Admin SDK、またはそのタブにエクスポート ボタンを追加するブラウザ拡張機能が必要です。
Firebase の全ユーザーのメールアドレス一覧はどう取得しますか?
ユーザーをエクスポートして、メールアドレスの列を残します。Firexport の無料版のエクスポートでは identifier 列がそれにあたり、コンソールの表示どおり、メールアドレス(電話番号でログインするユーザーなら電話番号)が入ります。Admin SDK スクリプトなら、listUsers から user.email を集めます。
エクスポートにユーザーのパスワードは含まれますか?
平文のパスワードはどの方法でも得られません。Firebase はそもそもパスワードを保存していないからです。firebase auth:export にはパスワード ハッシュとソルトが含まれ、firebase auth:import はそれを使って、パスワードが使える状態のままユーザーを移します。Firexport はハッシュを一切読み取らず、Admin SDK は追加の権限があるときだけハッシュを返します。
ユーザーを別の Firebase プロジェクトにどう移しますか?
元のプロジェクトで firebase auth:export users.json を実行し、新しいプロジェクトで firebase auth:import users.json を実行します。その際、--hash-algo=SCRYPT と、元のプロジェクトのパスワード ハッシュ パラメータ(Password hash parameters)にあるハッシュ キー、ソルト区切り文字、ラウンド数、メモリ コストを指定します。Firexport やスクリプトで作ったハッシュのないファイルでは、パスワードでログインするユーザー全員がパスワードを再設定することになります。
エクスポートを Excel や Google スプレッドシートで開けますか?
はい。ここで紹介したどの方法も CSV を書き出し、どちらでも開けます。Firexport とスクリプトの CSV はバイト順マークで始まるので、Excel はどの言語の名前も正しく読みます。バイト順マークのない CSV で名前が文字化けする場合は、データ > テキストまたは CSV から(Data > From Text/CSV)で取り込み、元のファイル(File Origin)を 65001: Unicode (UTF-8) にしてください。
