# 概要
FirebaseAuth のユーザーの import/export の方法についてまとめておく。基本的には下記の通り。
Firebaseプロジェクト以外にも移行が可能な模様。
Firebaseの認証情報を外部に移行する - Rhythm & Biology
この記事でのそれぞれの名称は下記の通り。
- 移行元のFirebaseプロジェクト: FIR-A
- 移行先のFirebaseプロジェクト: FIR-B
注意
- import/export はコマンドからしか出来ない
- import 時のパスワードハッシュパラメータは移行元の情報を利用する
- 移行先と移行元に同じメールアドレスがあると重複する
- import 後のパスワードハッシュ値は空になり、1度パスワード認証が行われて rehash されなければ再度移行は出来ない
- import は 1000 件単位で行われ、エラーが出た場合は 1000 件単位で失敗する
- import 時に空の行がCSVにあると import エラーになる
やり方
まずは FIR-A のパスワードハッシュパラメータを確認する、確認方法は下記の通り。
プロジェクトに使用されているパスワード ハッシュ パラメータを確認するには、Firebase コンソールで [Authentication] > [Users] セクションの順に移動し、ユーザーのリストの上にあるその他アイコンをクリックします
パスワードハッシュパラメータの形式は下記の通り。
hash_config {
algorithm: SCRYPT,
base64_signer_key: <...sensitive...>,
base64_salt_separator: <...sensitive...>,
rounds: 8,
mem_cost: 14,
}
あとは CLI で FIR-A のユーザーを export して、FIR-B に import すれば完了。
$ firebase use FIR-A
$ firebase auth:export fir-a.csv
$ firebase use FIR-B
$ firebase auth:import fir-a.csv
--hash-algo=[algorithm]
--hash-key=[signer_key]
--salt-separator=[base64_salt_separator]
--rounds=[rounds]
--mem-cost=[mam_cost]
import時にユーザーが重複するのを避けたい場合
移行元と移行先のユーザーをCSVでエクスポートして、Googleスプレッドシートにそれぞれ別のシートで import する。次に、もう一つシートを作成して、A1で次の関数を利用すると自動で重複していないユーザーのみのリストが生成されるので、これを FirebaseAuth に import すれば良い。
=FILTER(FIR-A!A:E, COUNTIF('FIR-B'!B:B, FIR-A!B:B)=0)
ちなみに、重複しているユーザーのみを取得する場合はこちら。
=FILTER(FIR-A!A:E, COUNTIF('FIR-B'!B:B, FIR-A!B:B)>0)