Destruye las cookies en rieles, Facebook Connect, plugin de Facebook

votos
4

Así que estoy pasando por una situación extraña. Estoy usando el plugin Facebooker para los rieles donde quiero que los usuarios puedan iniciar sesión y cerrar la sesión con sus perfiles de Facebook. Sin embargo, una vez que los usuarios finalizan la sesión, si actualizo la página, volverá a iniciar sesión. Esto es solo cuando los usuarios inicien sesión con Facebook Connect.

Creo que el problema es que una cookie fraudulenta simplemente está volviendo a instanciar la sesión y, por lo tanto, mi mejor opción es destruir manualmente las cookies, pero para ser sincero, no estoy seguro de cómo hacerlo. Imprimí mi lista de cookies (desde request.cookies) antes y después de hacer clic en cerrar sesión. Después de hacer clic en el cierre de sesión, todavía tengo esta cookie persistente ... pero no sé cómo eliminarla.

fbsetting_0b78c8f2c95ce671470bdcb1c19e5070 {connectState: 1, oneLineStorySetting: 1, shortStorySetting: 1, inFacebook: falso}

Después de jugar con eso un poco más, esa cookie ni siquiera está allí ... pero al actualizar la página, vuelvo a iniciar sesión.

Estoy haciendo esto todo en localhost ... no estoy seguro si eso debería causar un problema o no.

¿Algunas ideas?

Publicado el 21/05/2009 a las 19:44
fuente por usuario
En otros idiomas...                            


4 respuestas

votos
3

La destrucción de las cookies locales no es suficiente para finalizar una sesión de Facebook Connect. La biblioteca de Connect JS recreará las cookies destruidas siempre que aún tenga una sesión activa en el dominio facebook.com, y esas cookies no son accesibles para usted.

Todas las desconexiones se deben gestionar llamando a la función de cierre de sesión en la biblioteca de conexión.

p.ej,

<script>$H.fbconnect.logout();</script>
Respondida el 21/05/2009 a las 21:16
fuente por usuario

votos
0

Para eliminar una cookie, debe volver a configurar la cookie con una fecha de caducidad anterior.

Respondida el 22/05/2009 a las 18:15
fuente por usuario

votos
6

Esto es lo que tengo en el controlador de usuarios

  def logout_facebook
    clear_facebook_session_information
    redirect_to root_url
  end

y así es como se dispara

<%= fb_logout_link("Logout out", "#{root_url}users/logout_facebook")%>

Así es como lo hice para eliminar las cookies en el lado local.

Nota: no olvide agregar una ruta al método logout_facebook en sus rutas.

Respondida el 19/10/2009 a las 18:21
fuente por usuario

votos
0

un millón de gracias por la solución limpia y completa a prueba a una funcionalidad tales agotado. He estado yendo literalmente en blanco sobre últimas 2 semanas desde que me encontré con el hecho cierto que creo que casi todos los usuarios NEW-Facebooker, "Facebook Connect cerrar la sesión por completo". O tal vez sólo era sólo una falta de documentación o algún fragmento de código que no fue capaz de encontrar hasta la fecha en la documentación de la cubierta Facebooker.

De todos modos lejos de todo eso, se mueve a la solución que me hizo lo logro ... Siguiendo con el método @ James B anterior.


Obviamente estoy asumiendo que todos han leído las instrucciones de instalación Facebooker, configuración y uso http://github.com/mmangino/facebooker . También he utilizado un plugin "authlogic_facebook_connect", que se puede encontrar en la página de github.com kalasjocke / authlogic_facebook_connect.

Ahora supongo que ya ha configurado la aplicación para trabajar con Facebook Connect utilizando fb_login_button o authlogic_facebook_login_button. Haciendo clic en él te gustaría ver una ventana emergente para iniciar la sesión a sí mismo en tanto que su cuenta de Facebook y en la cuenta local de su aplicación. Una vez que entre usted estaría recibiendo un facebook_session manejar el ahorro de un nuevo usuario en su base de datos (sólo si se desea).

Por defecto no estaría recibiendo dirección de cumpleaños y de correo electrónico de los usuarios en el facebook_session como respuesta por parte de Facebook. Para conseguir que se necesita algo como esto en su inicialización javascript en el cuerpo de la etiqueta de la página RHTML ...

<%= fb_connect_javascript_tag %>   <%=
init_fb_connect "XFBML",{
:app_settings=>" {
permsToRequestOnConnect :
'email,user_birthday' }"} %>
<%= authlogic_facebook_login_button %>

Ahora, por fin lo que hice por cómo cerrar la sesión de Facebook y mi sitio.

  1. Dentro de la cabecera de su aplicación o donde la conexión, desconexión, loggedin de los usuarios nombre etc mostrará ...

    : Eliminar%>

Los dos botones de cierre de sesión son para diferentes tipos de usuarios .. a. El usuario registrado directamente en su sitio, b. que registerd a su sitio a través de Facebook

  1. Ruta para logout_both en routes.rb

map.connect "/ logout_both",: controller => "usuarios",: action => "logout_both"

  1. La acción de logout_both dentro users_controller.rb

    def logout_both current_user_session.destroy #clear_facebook_session_information rápida [: aviso] "! Salir con éxito" = final redirect_to root_path #End de logout_both método

  2. Es necesario asegurarse de que no hay filtros definidos en el controlador que podría limitar la acción logout_both a ser ejecutado sin una sesión.

  3. Oh, sí, y si usted se pregunta por qué "clear_facebook_session_information" se comenta en la acción. Entonces no se preocupe, ya has iniciado sesión de facebook antes de entrar en esta acción, ya no es necesaria esta línea. Jefe que estamos usando "fb_logout_link", que primero los troncos hacia fuera y luego le redirige a esta nueva acción.

Bueno, eso es todo. Si esto no lo hace ........ ensuciarse las manos que estoy haciendo .. .. cavar en resolverlo por sí mismo. Facebooker es profunda, pero tiene un final definido !!!

De nuevo muchas gracias a Mangino y kalasjocke para la fabricación de Facebook Connect casi no dolorosa para los carriles.


Un pueblo de clarificación ... en mi respuesta anterior .. Hay un cateto, que es .. Después de cerrar la sesión, si actualiza la página .. De nuevo demostró que ha entrado en el en su sitio .. sin embargo está conectado con éxito de Facebook. Estaba equivocado, una simple aclaración GRANDE ...... Como cuestión de hecho, usted no necesita estas dos líneas EN SU "logout_both" acción

def logout_both <br/>
      current_user_session.destroy<br/>
      clear_facebook_session_information  #MANDATORY TO COMPLETELY CLEAR COOKIES<br/>
      reset_session  # TO BE 100% sure you can use it optionally<br/>
      flash[:notice] = "Logout successful!"<br/>
      redirect_to root_path   <br/>
end
Respondida el 24/07/2010 a las 11:15
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more