ruby on rails 4 - google - ¡Omniauth diseña falla de autenticación! csrf_detected:
rails devise google (1)
Parece que también hiciste esta pregunta en el Omniauth Facebook Github Repo. Tampoco parecía que hubiera una respuesta sólida allí.
@dmcbrayer sí sugirió cambiar su inicializador para que se vea así:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, ENV[''FACEBOOK_KEY''], ENV[''FACEBOOK_SECRET''],
:scope => ''email'',
:info_fields => ''email''
end
Esto se debió a un cambio de API en el lado de Facebook que requería que solicitaras explícitamente info_fields
.
El mantenedor @mkdynamic también quería que verificaras si se corrigió en una versión más nueva (3.0.0 en ese momento).
¡Obtuve el Authentication failure! csrf_detected:
Authentication failure! csrf_detected:
para que no pueda iniciar sesión con omniauth.
Seguí este tutorial
y encontré un problema similar aquí ,
Pero no hay suerte para mi problema hasta ahora.
Alguna idea para arreglar el error? Gracias
E, [2015-06-27T10:40:06.028200 #18798] ERROR -- omniauth: (facebook) Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected
Gemas
* devise (3.5.0)
* omniauth (1.2.2)
* omniauth-facebook (2.0.0)
* omniauth-oauth2 (1.3.1)
/app/controllers/application_controller.rb
protect_from_forgery with: :exception
-
+ before_action :authenticate_user!
/app/models/user.rb
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
+
/config/initializers/omniauth.rb
+Rails.application.config.middleware.use OmniAuth::Builder do
+ provider :facebook, ENV[''FACEBOOK_KEY''], ENV[''FACEBOOK_SECRET''],
+ :scope => ''email''
+end
Registro de errores desde la consola (¿cómo rastrearlo?)
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"}
rutas
+ devise_for :users, :controllers => { :omniauth_callbacks => "callbacks" }