Hola,
Necesitaba hacer una consulta. Estamos haciendo un sistema para la inscripción de los alumnos. Para facilitar la generación de usuarios, generamos una interface para que puedan enlazar su usuario de toba con facebook.
El problema viene cuando se cierra una sesión en el sistema (con la cruz que aparece en la parte superior derecha), debería cerrar la sesión de facebook también. Al momento de iniciar la sesión en la red social, el sitio devuelve una URL para el deslogueo, que debería estar incluida en el cierre de sesión.
Los pasos que debería seguir son:
hacer click en la cruz (para cerrar una sesión)
Capturar el evento
hacer un session_destroy para limpiar todas las sesiones
navegar a la URL de deslogueo de facebook
Mi pregunta es como puedo hacer todos estos pasos cuando se haga click en la cruz de cerrar sesión? o si se puede redefinir el método o hacer un navegar_a para poder ir a la url de cierre de sesión de facebook.
Muchas gracias por la ayuda!
va a estar dificil que puedas capturar el evento, dado que el manejador de sesiones intercepta el pedido de logout y te desloguearia antes de pasarte el control.
Si mal no calculo tuvieron que hacer una clase de autenticacion para utilizar OAuth, de modo que podrian incluir un metodo logout alli dentro y luego invocarlo desde el metodo logout de toba_manejador_sesiones.
Es un poco trucho tener que modificar dicha clase para ello… pero de otra forma no vas a poder cerrar la sesion de facebook (si es que el standard asi lo define).
En la proxima version de Toba ya se invoca al metodo logout de las clases de autenticacion, por lo tanto dicho cambio deberia seguirte funcionando a futuro.
El tema Victor… es que no vas a llegar a esa funcion ini, salvo que modifiques la llamada que hace toba desde el cliente.
Por otro lado, para cuando el control te llega al CI… probablemente ya se haya enviado el menu al cliente (por un tema de optimizacion) … con lo cual ya no vas a poder cambiar los headers para hacer la redireccion correspondiente. Eso lo podrias llegar a manejar, retrasando el envio de los mismos… pero hacerlo para todas las operaciones del sistema desvirtua el proposito me parece.
Poniendo el redirect en la clase encargada de manejar OAuth, te aseguras que para cuando llega ahi … la sesion en toba ya se finalizó, por lo que podes enviarle al cliente el redirect sin problemas ya que estas antes de que la ejecucion del pedido comience.
segun entiendo estas logueando y deslogueando al inicio de la sesion en toba no?.. digamos que es una sesion mentirosa (al menos del lado de fb).
Eso no te dejaria clavado en la pagina de facebook?.
Hace como gustes, quizas ahora cuando salga la version 2.4 podes pasarte al esquema de clases para no tener que hacer esos 2 pedidos de pagina juntos, incluso podes usar CAS u OpenId como ejemplo para orientarte.
Mas o menos … en realidad le pido a fb que me diga si una persona es o no usuario de fb. Eso lo hago con OAuth. Cuando me confirman que el usuario es válido en fb, lo agrego como usuario de toba.
Después al momento de loguearse, si lo hacen por fb verifico que exista en toba también. Si es así, redirecciono a fb para poder cerrar la sesión (para que no quede la sesión de fb abierta, porque a veces se olvidan de cerrar las ventanas y si abren una nueva se puede ver el perfil del último logueado). Al hacer esa redirección se cierra la sesión de fb y me redirecciona nuevamente a toba … y como el usuario existe, lo loguea con los datos en memoria de toba.
En resumen es copiarse los datos de fb y con esos datos crear y loguear un usuario en toba.
No se si me explique bien