Ruby on rails 使用Desive登录Facebook
我使用omniauth facebook 1.4.1和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.
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.
我对第一行进行了注释,然后它就开始工作了