Facebook Oauth Cerrar sesión
Tengo una aplicación que se integra con Facebook usando Oauth 2.
Puedo autorizar con FB y consultar sus API REST y Graph perfectamente, pero cuando autorizo se crea una sesión de navegador activa con FB. Entonces puedo cerrar sesión en mi aplicación muy bien, pero la sesión con FB persiste, por lo que si alguien más usa el navegador verá la cuenta de FB de los usuarios anteriores (a menos que el usuario anterior también cierre sesión de FB manualmente).
Los pasos que tomo para autorizar son:
Llame a [LINK: graph.facebook.com/oauth/authorize?client_id ...]Este paso abre una ventana de inicio de sesión / conexión de Facebook si el navegador del usuario aún no tiene una sesión de FB activa. Una vez que inician sesión en Facebook, redirigen a mi sitio con un código que puedo cambiar por un token oauth.
Llame a [LINK: graph.facebook.com/oauth/access_token?client_id ..] con el código de (1)Ahora tengo un token Oauth, y el navegador del usuario ha iniciado sesión en mi sitio y en FB.
Llamo a un montón de API para hacer cosas: es decir, [LINK: graph.facebook.com/me?access_token= ..]Digamos que mi usuario quiere cerrar sesión en mi sitio. Los términos y condiciones de FB exigen que realice el cierre de sesión único, por lo que cuando el usuario cierra sesión en mi sitio, también se desconecta de Facebook. Hay argumentos de que esto es un poco tonto, pero estoy feliz de cumplir si hay alguna forma de lograrlo.
He visto sugerencias que:
A. Uso la API de Javascript para cerrar sesión: FB.Connect.logout (). Bueno, intenté usar eso, pero no funcionó, y no estoy seguro exactamente cómo podría hacerlo, ya que no uso la API de Javascript de ninguna manera en mi sitio. La API de Javascript no mantiene ni crea la sesión, por lo que tampoco estoy seguro de cómo se supone que caduque.
B. Utilice [LINK: facebook.com/logout.php]. Esto fue sugerido por un administrador en los foros de Facebook hace algún tiempo. El ejemplo dado se relaciona con la antigua forma de obtener sesiones de FB (no oauth), por lo que no creo que pueda aplicarlo en mi caso.
C. Utilice la antigua API REST expireSession o revoque la autorización. Intenté ambos y, aunque caducan el token Oauth, no invalidan la sesión que el navegador está usando actualmente, por lo que no tiene ningún efecto, el usuario no ha cerrado sesión en Facebook.
Estoy realmente un poco flojo, la documentación de Facebook es irregular, ambigua y bastante pobre. El soporte en los foros es inexistente, por el momento ni siquiera puedo iniciar sesión en el foro de Facebook, y aparte de eso, su propia integración de FB Connect ni siquiera funciona en el foro en sí. No inspira mucha confianza.
Ta para cualquier ayuda que pueda ofrecer. Derek
PD. Tuve que cambiar HTTPS a LINK, no hay suficiente karma para publicar enlaces, lo que probablemente sea lo suficientemente justo.