どうも!!!
チャンクノです!!!
今回はomuniauthのGoogle認証でめちゃくちゃ詰まった話について書きますよー。
自分は今やっているチーム開発でFacebookとGoogle認証を用いた新規登録とログイン機能を実装しています。
Facebookはちょっとつまりつつもなんとかできました。
で、これは調べてもらえればわかるんですけど認証機能を実装するためのコードってFacebookもGoogleも共通のコードを使うんですよね。すなわちFacebookができたならgoogleもできるはずなんです。
しかし!!!
Googleがなぜかできない、、、
認証はできているのだがDBに保存されず必死にググり続け、その後メンターさんに聞いたところ
「ターミナルを見てみましょう」とのお声がありました。
実際にみてみると
ERROR -- omniauth: (google_oauth2) Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected
こんなエラーが書いてありました。
結論から言うとこのエラーの内容はよくわかんないです。
ただ回避策がありました。
google認証にはgem 'omniauth-google-oauth2'というgemを使います。
まずはこれのバージョンをさげてbundle installします。自分は0.5.4でできました!!!
次にconfig/initializerの中にomniauth.rbファイルを作成
omniauth.rbの中に
Rails.application.config.middleware.use OmniAuth::Builder do
{:provider_ignores_state => true}
end
を記述する。
以上です。
これでできるはずです。
一日この機能に費やして途中は本当に心が折れそうでした、、、。(なんなら折れてた)
でもコードがちゃんと動いてDBに保存された時はめちゃくちゃ嬉しかったです!!!
ぶっちゃけ少し泣きそうになりました。
大切なのはターミナルもみることですね。
いい経験になりました。
これからもエラーとの戦いを頑張って制していきます💪
それでは皆様の良きプログラミングライフを祈って🙏🙏🙏
Facebook,Google認証機能実装の参考記事
https://mchinta.hatenablog.com/entry/2019/01/04/115312
https://qiita.com/hidepino/items/a1eb9d2f32ce33389f20