質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1182閲覧

Firebase CLI auth:exportで書き出したアカウントをauth:importで別プロジェクトにインポートした際、パスワードがインポートされない。

o24

総合スコア48

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/12/30 04:52

編集2017/12/30 07:49

FirebaseCLIを使用してアカウントを別プロジェクトにインポートしたいと思っております。

以下の通り試してみたところ、アカウントのインポートはできているようですが、パスワード情報が正常にインポートできていないようで、 ログインを試みるとエラーが返ってきます。

※コンソールから該当のアカウントのパスワードリセットをした後は正常にログインできるので、パスワードのインポートができていないのだと予想しております。

環境

プロジェクトA : アカウントを export したいプロジェクト
プロジェクトB : アカウントを import したいプロジェクト

CLI version

> firebase --version 3.16.0

アカウントのexport

プロジェクトAにて以下コマンド実行

> firebase auth:export accounts.json --format=json Exporting accounts to accounts.json ✔ Exported 1 account(s) successfully.

アカウントのimport

プロジェクトBにて以下コマンド実行

# プロジェクトA > Authentication > ... > パスワードハッシュパラメータ から以下の値をコピー # --hash-key : base64_signer_keyの値 # --salt-separator : base64_salt_separatorの値 # --rounds : roundsの値 # --mem-cost : mem_costの値 > firebase auth:import ../proj_a/accounts.json \ --hash-algo="SCRYPT" \ --hash-key="xxx" \ --salt-separator="xxx" \ --rounds=8 \ --mem-cost=8 Processing ../proj_a/accounts.json (356 bytes) Starting importing 1 account(s). ✔ Imported successfully.

結果

プロジェクトBのコンソール上では、importしたアカウントが表示されております。

プロジェクトBの環境で以下jsを実行するとエラーが返ってきます。

firebase.auth().signInWithEmailAndPassword(mail, pass)

エラー内容

POST https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=xxx 400 () code: "auth/wrong-password", message: "The password is invalid or the user does not have a password."

ご存知のかたよろしくお願いします。

===================================================
今回検証にて実際に使用した情報は以下の通りです。

エクスポート

  • エクスポートしたアカウント

メール : test@hoge.com
パスワード : 11111111

  • コマンド
firebase auth:export accounts.json --format=json
  • accounts.json
{"users": [ { "localId": "NLO5F7QCgZZFjtOrsGEpOT6G3YB3", "email": "test@hoge.com", "emailVerified": false, "passwordHash": "8uxwur+eZuT2GnGx/cEcVq3abOewcvtP+XKB4eeZbHaazGLan1Em0gFXAgvzWN4/t/43pejYr41A39MkcfKTdQ==", "salt": "nj0vBi53udCVeQ==", "createdAt": "1514618866000", "providerUserInfo": [] }]}
  • パスワードハッシュパラメータ
hash_config { algorithm: SCRYPT, base64_signer_key: PmoPS+RjzExJmFS8rlArNjhKLPctwy2P8IvNwTGOtA1w7MeI2d0NutqhYHx/BSnuKKJ3tZjjjN7HrGi0qjMvKA==, base64_salt_separator: Bw==, rounds: 8, mem_cost: 14, }

インポート

  • コマンド
firebase auth:import ./accounts.json \ --hash-algo="SCRYPT" \ --hash-key="PmoPS+RjzExJmFS8rlArNjhKLPctwy2P8IvNwTGOtA1w7MeI2d0NutqhYHx/BSnuKKJ3tZjjjN7HrGi0qjMvKA==" \ --salt-separator="Bw==" \ --rounds=8 \ --mem-cost=8
  • インポートしたアカウントを更にエクスポートした結果

パスワード関連の値が含まれていませんでした。

{ "localId": "NLO5F7QCgZZFjtOrsGEpOT6G3YB3", "email": "test@hoge.com", "emailVerified": false, "createdAt": "1514618866000", "providerUserInfo": [] },

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

パッと見手法は問題なさそうな気がします.
念のためですが,コピペミスはありませんか?
余分なスペースやカンマなど…

【追記】
以前Authを使ったことがあるプロジェクトではありませんか?
もしかすると,以前使われていた見えない設定がコマンドでは上書きできない仕様という可能性はあります.

投稿2017/12/30 06:31

編集2017/12/30 22:58
Yatima

総合スコア1159

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

o24

2017/12/30 07:43

回答ありがとうございます。 実行した内容を質問内容にコピペしていますのでこの通り実行しております。 追記で実際に検証に使用した情報を追記しましたので、もしお時間があれば試してみて頂けませんか?
Yatima

2017/12/30 10:05 編集

後ほど試してみます. ちなみに`--mem-cost=14`にしてみたらどうなりますか?
o24

2017/12/30 10:08

ありがとうございます。 `--mem-cost=14` で auth:import してみましたが、結果に変わりはありませんでした。
Yatima

2017/12/30 13:01 編集

こちらも試してみましたが,問題なくログイン出来ました.
Yatima

2017/12/30 13:09 編集

しかしソースコードは問題なさそうですよね. 以前Authを使ったことがあるプロジェクトではありませんか?もしかすると,以前の設定がコマンドでは上書きできない仕様という可能性はあります.
o24

2017/12/30 15:40

できました!! プロジェクトが怪しいとアドバイスを頂きましたので、export元とimport先のプロジェクトを新たに作り直したところ正常にインポートされ、パスワードでのログインが出来ました。 本当にありがとうございました。 後学のためもう少し教えてください。 `以前Authを使ったことがあるプロジェクト` の Authとは `firebase auth` コマンドの事でしょうか?  それともSDKのAuth機能の事でしょうか?
Yatima

2017/12/30 22:51 編集

いえいえ,出来たのであれば何よりです. 厳密にはどちらでもないですかね. FirebaseのサーバサイドとしてのAuth機能です(大抵はSDK経由ですが). サーバ側の見えない部分で設定が記録されてしまっていたのでしょう.
o24

2017/12/31 01:20

functionsや、CLIなどもいろいろ触っていたのでその辺りで変な設定をしてしまったのかもしれないです。 本当に助かりました。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問