LoginSignup
2
3

More than 1 year has passed since last update.

FirebaseAuth のユーザーを別のFirebaseプロジェクトへ移行する

Last updated at Posted at 2021-07-31

 概要

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)
2
3
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
2
3