色々サイトを参考にdeviseを使った、sns認証を実装していたら、ルーティングについてちょっと詰まったので、備忘録として記録します。
開発環境
- ruby 2.4.5p335 (2018-10-18 revision 65137) [x64-mingw32]
- Rails 5.2.3
- devise (4.6.2)
- omniauth-facebook (5.0.0)
- omniauth-google-oauth2 (0.6.1)
- dotenv (2.7.2)
Gemインストール
上記の開発環境からdevise以下のgemをGemfileに追加します。
Gemfile
gem 'devise'
gem 'omniauth-facebook'
gem 'omniauth-google-oauth2'
gem 'dotenv'
追加したら、忘れずに bundle install --path vendor/bundle
しましょう。
※dotenvは、git管理をする場合などに外に漏洩してほしくないデータを環境変数として定義することで秘匿性を高められる便利なgemです。
このページに来ている人はある程度の設定ができているはずなので、細かい設定は割愛します。
参考記事
解決法
ルーティングを変更します。
おそらく変更前はこのような記述になっていると思います。
deviseのモデル名によって user
部分を任意に変更してください。
ルーティングがまだこの形になっていない場合は。上記の記事を参考に実装していきましょう。
routes.rb
devise_for :users, controllers: { omniauth_callbacks: 'users/omniauth_callbacks' }
変更後
routes.rb
devise_scope :user do
devise_for :users, controllers: { omniauth_callbacks: 'users/omniauth_callbacks' }
end
これで、デフォルトのルーティングが復活したと思います。