Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用Desive登录Facebook_Ruby On Rails_Facebook_Devise - Fatal编程技术网

Ruby on rails 使用Desive登录Facebook

Ruby on rails 使用Desive登录Facebook,ruby-on-rails,facebook,devise,Ruby On Rails,Facebook,Devise,我使用omniauth facebook 1.4.1和Desive登录facebook。这是一个错误 Could not authorize you from Facebook because "Csrf detected". 人们似乎通过将omniauth facebook降级到1.4.0来解决这个问题。我试过了,但现在出现了错误 The action 'facebook' could not be found for Devise::OmniauthCallbacksController.

我使用omniauth facebook 1.4.1和Desive登录facebook。这是一个错误

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} 
omniauth_回调位于控制器目录中:

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
class OmniAuthCallbackController“Facebook”
登录并重定向@user,:event=>:身份验证
其他的
会话[“designe.facebook_data”]=env[“omniauth.auth”]
将\重定向到新\用户\注册\ url
结束
结束
结束

有什么建议吗?

哦,我发现了问题所在。在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.
我对第一行进行了注释,然后它就开始工作了