Ruby on rails 4 Omniauth设计验证失败!检测到csrf_:
我得到了Ruby on rails 4 Omniauth设计验证失败!检测到csrf_:,ruby-on-rails-4,devise,omniauth,Ruby On Rails 4,Devise,Omniauth,我得到了认证失败!csrf_检测到:,因此我无法使用omniauth登录 我跟着这个 我发现了类似的问题 但到现在为止,我的问题还没有解决 有没有解决这个错误的办法?谢谢 E, [2015-06-27T10:40:06.028200 #18798] ERROR -- omniauth: (facebook) Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detect
认证失败!csrf_检测到:
,因此我无法使用omniauth登录
我跟着这个
我发现了类似的问题
但到现在为止,我的问题还没有解决
有没有解决这个错误的办法?谢谢
E, [2015-06-27T10:40:06.028200 #18798] ERROR -- omniauth: (facebook) Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected
宝石
/app/controllers/application_controller.rb
/app/models/user.rb
/config/initializers/omniauth.rb
控制台中的错误日志(如何跟踪?)
路线
看起来你也在Github回购协议上问过。看起来也没有一个可靠的答案 是否建议将初始值设定项更改为:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET'],
:scope => 'email',
:info_fields => 'email'
end
这是由于facebook端的API更改,它要求您明确要求info\u字段
维护人员还希望您验证它是否已在更新版本(当时为3.0.0)中修复。您是否能够解决问题?
protect_from_forgery with: :exception
-
+ before_action :authenticate_user!
devise :database_authenticatable, :registerable,
+ :omniauthable, :omniauth_providers => [:facebook]
+ def self.from_omniauth(auth)
+ where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
+ binding.pry
+ user.provider = auth.provider
+ user.uid = auth.uid
+ user.email = auth.info.email
+ user.password = Devise.friendly_token[0,20]
+ end
+ end
+
+Rails.application.config.middleware.use OmniAuth::Builder do
+ provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET'],
+ :scope => 'email'
+end
Started GET "/users/auth/facebook/callback?code=AQDZC-Ny2PI-UwunCNi29mx4YGKT&state=cf896d3decffe2a7a664315e050a1165a290477542ff7d33" for 127.0.0.1 at 2015-06-27 10:40:05 +0800
I, [2015-06-27T10:40:05.255832 #18798] INFO -- omniauth: (facebook) Callback phase initiated.
I, [2015-06-27T10:40:06.028051 #18798] INFO -- omniauth: (facebook) Callback phase initiated.
E, [2015-06-27T10:40:06.028200 #18798] ERROR -- omniauth: (facebook) Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected
Processing by CallbacksController#failure as HTML
Parameters: {"code"=>"AQDZC-Ny2PI-UwunCNi29mx4YGKTuHDeP2X2X-leywO14gr_iHLvXxX1LpV5WteUrQHpX-uc0Z01wcjy4XHA9CBkZeSo4qRb7jXdvPLfQl6mgwbMrFuQb1_55KughvtMWMlZ_7YEhtiLoEZH_2EvGXLbuKkUq", "state"=>"cf896d3decffe2a7a663"}
+ devise_for :users, :controllers => { :omniauth_callbacks => "callbacks" }
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET'],
:scope => 'email',
:info_fields => 'email'
end