5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Rails】devise + omniauthでfacebook, googleログイン実装中のエラー

Posted at

#概要
Rails5にてdevise, omniauthを用いてログイン機能を実装中に起きたエラーの解決方法をまとめました。同じ方法でエラー解決になれば幸いです。

#環境

#使用したgem

gem 'dotenv-rails'
gem 'omniauth-rails_csrf_protection'
gem 'omniauth-facebook'
gem 'omniauth-google-oauth2'

omniauthを使って実装している記事が多いのですが、脆弱性が指摘されているとのことでomniauth-rails_csrf_protectionを使用しています。
公式ドキュメントはこちら
https://github.com/cookpad/omniauth-rails_csrf_protection
参照記事
https://qiita.com/NT90957869/items/2a3ce18dedf93ccf2bdc

#エラーその1 Authentication passthru.
リンクから飛んだ時に表示されるこんな画面。

Image from Gyazo

解決策

Qiita記事の通りやったのにー! なんでだー!
と思いました、はい。
ちゃんとドキュメントを読みましょう。

今回、使っているgemはomniauth-rails_csrf_protectionでした。
公式ドキュメントを読んでみると、methodを指定する必要があるとのこと

You will then need to verify that all links in your application that would initiate OAuth request phase are being converted to a HTTP POST form that contains authenticity_token value. This might simply be done by changing all link_to to button_to, or use link_to ..., method: :post.

ですのでfacebookとかのリンクを以下のようにする必要がありますね

@_new.html.haml
     = link_to user_facebook_omniauth_authorize_path , method: :post

#エラーその2 JWT::InvalidIatError
「OSの時間のずれ」が原因だそうです。
omniauth-google-oauth2の公式ドキュメントに以下の記述がありました。

skip_jwt: Skip JWT processing. This is for users who are seeing JWT decoding errors with the iat field. Always try adjusting the leeway before disabling JWT processing.

なので以下のように追記します。

config.omniauth :google_oauth2, ENV['GOOGLE_CLIENT_ID'], ENV['GOOGLE_CLIENT_SECRET'], skip_jwt: true

公式ドキュメント
https://github.com/zquestz/omniauth-google-oauth2

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?