Laravel+EC2でGoogleログインがエラー吐いてしまう問題

1 min read読了の目安(約1000字

ザツバコというサービスを作って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ログインできるようになりました。

当たり前ですがローカル用、本番用と処理を分けるのが重要という教訓を得ました。
ではでは~