⚠️

【CLI】Firebase Authenticationにjsonファイルからデータをimportする過程でつまづいた

に公開

【CLI】Firebase Authenticationにjsonファイルからデータをimportする過程でつまづいた

Firebase Authenticationにはファイルからデータのimportができる

auth:import と auth:export
もちろんexportもできます。
ファイル形式はCSVまたはJSONファイルです。
ファイルのフォーマットはこちらを参照してください。
今回はJSONファイルからのimportに挑戦しました。

使ったコマンド

CLIコマンド

firebase auth:import ./user.json --hash-algo=HMAC_SHA256  --hash-key=ハッシュキー

つまづいた箇所

passwordHashの値でエラーになる

passwordHashに設定する値をBuffer.from(passwordHash)としていましたが、passwordHashをそのまま渡すだけでよかったようです。

渡すobjectのpropertyを正しく設定する必要がある

先ほども記載しましたが正しいフォーマットで記述する必要があります。

「フィールドの説明」ではuidと記述があったので、そのまま記載していましたが、正しくはlocalIdとする必要がありました。
ドキュメントを正確に読む必要があります。

{
    "localId": UID,
    "email": EMAIL_ADDRESS
    "emailVerified": EMAIL_VERIFIED,
    "passwordHash": BASE64_ENCODED_PASSWORD_HASH,
    "salt": BASE64_ENCODED_PASSWORD_SALT,
    "displayName": NAME,
    "photoUrl": PHOTO_URL,
    "createdAt": CREATED_AT_IN_MILLIS,
    "lastSignedInAt": LAST_SIGNEDIN_AT_IN_MILLIS,
    "phoneNumber": PHONE_NUMBER
    "providerUserInfo": [
      {
        "providerId": PROVIDER_ID,
        "rawId": PROVIDER_UID,
        "email":  PROVIDER_EMAIL,
        "displayName": PROVIDER_NAME,
        "photoUrl": PROVIDER_PHOTO_URL
      },
      ...
    ]
  },

usersをkeyにして渡す必要があった

上のobject(user_objectsとする)をそのままリストに入れて、以下のような形としていましたが、正しくありませんでした。

[
    user_objects,
    user_objects,
    user_objects
]

正しくは、以下のようにusersをkeyにして渡す必要がありました。

{
    users: [
        {},
        {},
        {},
    ]
}

正確に確認する必要がありました。
このあたりで数時間悩みました。

まとめ

ドキュメントを正確に読むことが重要です。
また、パスワードハッシュなどの知識も補強していく必要があると感じました。

GitHubで編集を提案

Discussion