目次
現象
firebaseのユーザ作成がローカルのlaravel環境だと上手くいくのに、herokuにdeployした環境だと上手くいきませんでした。
$this->auth->createUserWithEmailAndPassword($email, $password);
laravel側は上記のfirebaseの処理で以下エラーを出します。
openssl_sign(): supplied key param cannot be coerced into a private key
原因
herokuで環境変数で設定しているFIREBASE_PRIVATE_KEYがおかしい。
ローカルのenvでは
FIREBASE_PRIVATE_KEY=”—–BEGIN PRIVATE KEY—–\n{{key}}\n—–END PRIVATE KEY—–\n”
となっている。
herokuの環境変数でも同じようにしているのですが、エラーが起きます。
試したことは
- \nの部分をherokuの管理画面から改行する
- “”を消してみる
- “”を”にしてみる
この辺を全て組み合わせたのですがどうしても上手く行かない。
どうもherokuの環境変数は\nで文字列が切れてしまっている気がする。
解決方法
'private_key' => str_replace('\\n', "\n",config('services.firebase.private_key')),
色々試した結果、\nを\\nに変換してやるとprivate_keyの改行が正しくなりました!!!
ファイルにprivate_keyを記載して読み込みとか他にも方法はありそうですが、今回はこれで対処します。
コメント