2012-07-18 13 views
5

Este es el error que veo al intentar iniciar sesión a través de Facebook, siempre veo ese error. Parece que no puede deshacerse de él:Rails 3.2 + Facebook auth + CSRF FAILURE

No se pudo autorizar desde Facebook porque "Csrf detectó".

pongo un salto:

skip_before_filter :verify_authenticity_token 

en la devolución de llamada OmniAuth, pero aún así me sale el error. Esto es en entornos locales y prod (heroku). He establecido las variables de entorno heroku. ¿Alguna idea?

Respuesta

6

encontré que el problema era la joya era demasiado nuevo y pasar un encabezado ESTADO a facebook, que fb no quería. Hice rodar la versión de la gema de omniauth-facebook y funcionó

+0

¿A qué versión regresaste? –

+4

Tuve el mismo problema, la degradación de omniauth-facebook a 1.4.0 resolvió el problema. –

+0

https://github.com/mkdynamic/omniauth-facebook/issues/75 y https://github.com/intridea/omniauth-oauth2/issues/20 para obtener más información – Nevir

0

¿Usted está enviando una cabecera P3P puede que añadir ...

before_filter :set_p3p 
private 

def set_p3p 
    headers['P3P'] = 'CP="ALL DSP COR CURa ADMa DEVa OUR IND COM NAV"' 
end 

a su controlador de aplicación

7

que tenían el mismo problema que tiene en el mismo día !! Pensé que era una actualización de gema o algo así, pero no del todo. Con una depuración profunda encontré que omniauth "Callback phase started". fue llamado dos veces

que era debido a una doble inicialización estúpida del proveedor de

: facebook, .....

Uno en config/inicializadores/devise.rb y en otro inicializador.

espero que le dará una pista para encontrar el error

+1

Descubrí que el problema era que la gema era demasiado nueva y le enviaba un encabezado ESTADO a Facebook, lo que fb no quería. Hice rodar la versión de la gema omniauth-facebook y funcionó. – tesserakt

+0

+1, ¡¡Impresionante !! ¡¡Salvaste mi día!! Gracias :) – Surya

+0

Estaba teniendo este problema con otro proveedor de omniauth y no pude resolverlo hasta ver esto. ¡Gracias! – Arrel