🦾
Laravel+EC2でGoogleログインがエラー吐いてしまう問題
ザツバコというサービスを作ってAWSにデプロイした際にGoogleログインが機能しなくて数日間悩み調べた結果解決しましたという話。
よし!LaravelのSocialiteを使ってGoogleログインを作ったぞ!→ローカルでも動くしEC2上でも動くっしょ!→以下のエラー
エラー
400: invalid_request!
先に正解を言うとGooglePlatFormのコールバックURIをhttps://{ドメイン}/login/google/callbackに書き換えたら正常に動きました。
対処した事
まず考えたのは.envにおかしな記述はないか確かめました。
Githubからクローンしたソースコードの.envファイルにクライアントIDとシークレットIDが書かれていなかったのでそちらを記載
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
GOOGLE_CLIENT_ID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
GOOGLE_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
結果…変わらず
次にAWSのロードバランサーのログとnginxのログを確認しましたが、特にエラーは表示されていません。
解決
ん~…GooglePlatFormの設定がおかしいのかなと見直してみる。
よくよく見てみるとこのコールバックURIがローカル用のままではないか!
ローカルと本番で別の遷移先になってしまってきちんと動いていないことが原因でした。
正解はhttps://{ドメイン}/login/google/callback と書き、EC2上のservices.phpファイルも同じように書けば無事本番環境でもGoogleログインできるようになりました。
当たり前ですがローカル用、本番用と処理を分けるのが重要という教訓を得ました。
ではでは~
Discussion