入れたgemは
gem 'omniauth' gem 'omniauth-facebook' gem 'omniauth-twitter'
http://ruby-rails.hatenadiary.com/entry/20140805/1407200400
http://qiita.com/kami_zh/items/94aec2d94a2b4e9a1d0b
基本的にはこのあたりの参考に進めていきました。
Twitterの認証画面まではすんなりといったのですが、サイト側に戻ってきた時に
まずはaction『twitter』が見つからないとのエラーが
The action 'twitter' could not be found for Devise::OmniauthCallbacksController
原因を探している中、rake routesしてみると、
user_facebook_omniauth_authorize GET|POST /users/auth/facebook(.:format) devise/omniauth_callbacks#passthru user_facebook_omniauth_callback GET|POST /users/auth/facebook/callback(.:format) devise/omniauth_callbacks#facebook user_twitter_omniauth_authorize GET|POST /users/auth/twitter(.:format) devise/omniauth_callbacks#passthru user_twitter_omniauth_callback GET|POST /users/auth/twitter/callback(.:format) devise/omniauth_callbacks#twitter
devise/omniauth_callbacks?
作業進めていく中でルーティングが参考サイトと異なるなあとは思っていたのですが、コントローラーにdeviseなんてディレクトリはない。
もしかしたらdeviseカスタマイズでコントローラー生成していたのが原因かなーと思い、
route.rbに
devise_for :users, :controllers => { # 省略 :omniauth_callbacks => "users/omniauth_callbacks" }
を追記
すると別エラー。アクションは無事見つかった模様です。
ActiveModel::ForbiddenAttributesError
参考にしたサイトからコピペしてきたuser.rb
where(auth.slice(:provider, :uid)).first_or_create do |user|
の部分が引っかかっている模様
ちょうどドンピシャな質問をしている掲示板を見つけました。
http://stackoverflow.com/questions/25399414/rails-4-1-5-omniauth-strong-parameters
ここの回答と同様の対応をしたところ無事に新規登録画面に戻ってきてくれました。
Railsのルーティングや規則に不慣れなことから来る初歩的なミスでした…
自分と同様の実装をお考えで、同様の事象に悩まされている方のお役に立てればと思います。
閲覧いただき、ありがとうございました。
こちらの記事もオススメ