facebook authentication logout oauth-2.0

facebook - FB auth.logout se está iniciando después de iniciar sesión utilizando el "flujo de trabajo del lado del servidor"(OAuth 2.0)



authentication oauth-2.0 (1)

Para páginas ajax, necesita obtener el uid, access_token y / o el código de la sesión del navegador.

Esto es estándar para iframes y ajax para prevención de clickjack y otros riesgos de seguridad. VER: http://tools.ietf.org/html/rfc6749#section-10.13

EJEMPLO RÁPIDO Y SUCIO:

<?php // be sure to exchange YourAppId, with your app id. if(isset([fb_YourAppId_user_id])){ $user = [fb_YourAppId_user_id]; }else { // no user, send to login flow. } if(isset([fb_YourAppId_access_token])){ $access_token = [fb_YourAppId_access_token]; } else { // no user, send to login flow } ?>

NOTA: Nuestra aplicación (web) funcionaba bien hasta que pasamos al flujo de trabajo de Oauth 2.0 el pasado fin de semana.

Cuando un usuario "se conecta con Facebook" a nuestra aplicación (web), inicia sesión en Facebook utilizando el "flujo de trabajo del servidor" descrito en los documentos de autenticación de Facebook . Sin embargo, Facebook está planteando el evento auth.logout cuando el usuario accede a su página de inicio en nuestra aplicación que contiene el siguiente código de JavaScript:

window.fbAsyncInit = function() { FB.init({appId: ''XXX'', status: true, cookie: true, xfbml: true, channelUrl: ''http://XXX/fbchannel.html'', oauth: true}); FB.Event.subscribe(''auth.logout'', function(response) { logout(); }); }; (function() { var e = document.createElement(''script''); e.type = ''text/javascript''; e.src = document.location.protocol + ''//connect.facebook.net/en_US/all.js''; e.async = true; document.getElementById(''fb-root'').appendChild(e); }()); function logout(){ new Ajax.Request(''http://XXX/logout''); }

Parece que mientras el usuario está conectado a Facebook, no está conectado a nuestra aplicación (si tiene facebook.com abierto en una segunda pestaña de su navegador y vuelve a cargar la página después de haber iniciado sesión en nuestra aplicación, verá que de hecho, has iniciado sesión en facebook.com).

¿Hay algún paso adicional en OAuth 2.0 que se deba tomar para registrar al usuario en nuestra aplicación cuando se utiliza el "flujo de trabajo del servidor" que no era necesario en la versión anterior de OAuth? ¿El usuario tiene que iniciar sesión explícitamente a través de Facebook después de estar conectado?

Cualquier ayuda sería muy apreciada.

Gracias de antemano, Jason

PD: Iniciar sesión en nuestra aplicación a través del flujo del lado del cliente (después de que se haya conectado anteriormente) funciona bien. Solo cuando se conecta y se inicia sesión a través del flujo de trabajo del lado del servidor experimentamos el problema de cierre de sesión automático.