【devise】OmniAuthを使用したTwitterログイン認証でハマったら試すこと【Ruby on Rails】

こんにちは、ライターのみなせしゅんです。
現在開発中のWEBサービスにTwitter認証機能を付けるべくこちらのページを参考にさせていただきながら実装していたのですが、なかなかうまくいきませんでした。
ですが色々試していたら解決したので、備忘録としてメモします。
Contents
ログインリンクを押すと画面が真っ白になってしまう場合
恐らくリンク先の指定が間違っています。
「new_user_registration_path」と指定すればよいと書いているサイトもありますが、これではだめっぽいです。
下記のように、プロバイダ毎に専用のURLが発行されているようなので、こちらを使うと解決する可能性があります。
<%= link_to "Sign in with Twitter", user_twitter_omniauth_authorize_path %>
<%= link_to "Sign in with Facebook", user_facebook_omniauth_authorize_path %>
Not found. Authentication passthru.と表示されてしまう場合
まずはCSRF対策のgemをインストールします。
gem "omniauth-rails_csrf_protection"
そして、OmniAuth 2.0以上を使用している場合、認証ページへのリンクを以下のような記述にする必要があるそうです。
<%= link_to 'ログイン', user_twitter_omniauth_authorize_path, method: :post %>
こんな感じで、llink_toの後ろにmethod: :postを付ける必要があるみたいです。
これでも解決しない場合、APIキーの指定が誤っている可能性があります。
ちなみに、上記の解決方法はdeviseのgemが置いてあるリポジトリのwikiに載っていました。
実装でつまづいたら、まずは公式のドキュメントを見に行くほうが早い場合もあるのでおすすめです。ぜひ。
https://github.com/heartcombo/devise/wiki/OmniAuth%3A-Overview
Share シェアしてほしい
Writer この記事をかいたひと
RYOZEN Scratch Creations代表。
1994年生まれ。千葉育ち。
2019年よりフリーランスで活動を開始。
ディレクションやフロントエンド・バックエンドのコーディング・プログラミング、グラフィックデザインからWEBデザインまで、わりとなんでもやる人。
座右の銘は「レベルを上げて実績で殴れ」。
Other Topics その他のTopics