0

facebookでログインするには、デバイスでomniauth-facebook1.4.1を使用します。のエラーがありました

Could not authorize you from Facebook because "Csrf detected".

人々はomniauth-facebookを1.4.0にダウングレードすることでこの問題を解決しているようです。試してみましたが、エラーが発生しました

The action 'facebook' could not be found for Devise::OmniauthCallbacksController.

ルートがあります

devise_for :users, :controllers => { :omniauth_callbacks => :omniauth_callbacks} 

omn​​iauth_callbacksはコントローラーディレクトリにあります。

class OmniauthCallbacksController < Devise::OmniauthCallbacksController
def facebook
  # You need to implement the method below in your model
  @user = User.find_for_facebook_oauth(env["omniauth.auth"], current_user)  

  if @user.persisted?
    flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Facebook"
    sign_in_and_redirect @user, :event => :authentication
  else
    session["devise.facebook_data"] = env["omniauth.auth"]
    redirect_to new_user_registration_url
  end
end
end

助言がありますか?

4

1 に答える 1

0

ああ、私は問題を見つけました。route.rb にはコード行があります

devise_for :users, :controllers => { :registrations => :registrations }

の前に

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks"}

メソッドを上書きするため、

The action 'facebook' could not be found for Devise::OmniauthCallbacksController.

最初の行にコメントすると、機能します。

于 2012-11-30T20:42:21.710 に答える