2011-08-29 21 views
10

Estoy trabajando en una aplicación de Facebook que está integrada con Facebook y estoy tratando de obtener la sesión de FB del usuario. Por lo que yo entiendo, un escenario de uso común es el siguiente.FB.getLoginStatus no se activa si el usuario no ha iniciado sesión en Facebook

  1. llamada FB.init()
  2. llamada FB.getLoginStatus dándole una devolución de llamada apropiada.

Ejecuto el siguiente código (la identificación de la aplicación).

<div id="fb-root"></div> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script type="text/javascript"> 
    <!-- 

    function init(){ 
     FB.init({ 
      appId : '9999999999999', 
      status : true, // check login status 
      cookie : true, // enable cookies to allow the server to access the session 
      xfbml : true, // parse XFBML 
      channelUrl : 'http://127.0.0.1:8888/channel.html', // custom channel 
      oauth : true // enable OAuth 
     }); 
     alert('going to call FB.getLoginStatus '); 

     FB.getLoginStatus(function(response) { 
      alert('whoo hoo!!! getLoginStatus called the callback'); 
     }); 
    } 
    init(); 
    //--> 
</script> 

Si el usuario ya ha iniciado sesión en Facebook en la misma sesión del navegador entonces todo funciona como se esperaba - devolver el _response.authResponse_ poblada. Sin embargo, si el usuario no está conectado a Facebook, la devolución de llamada no se activará en absoluto. Al revisar el registro de red de los navegadores, veo que Facebook devuelve la siguiente respuesta (solicitud desde http://www.facebook.com/dialog/oauth?).

Application Error: There was a problem getting data for the application you requested. The application may not be valid, or there may be a temporary glitch. Please try again later.

He comprobado esto en Chrome y Firefox (Mac).


actualización

me gustaría dar las gracias a todos los que respondieron.

Ben El comentario tuvo la respuesta.

Gracias Ben - me salvaste un montón de frustración.

+12

¿Está su aplicación en el modo de espacio aislado? Si es así, parece que hay un error que podría causar esto: http://bugs.developers.facebook.net/show_bug.cgi?id=19359 –

+0

¿Estás usando channelUrl como loopback, o solo para muestra? No creo que el loopback funcione para esa función. –

+0

se explica el uso de channelUrl [aquí] (https://developers.facebook.com/docs/reference/javascript/FB.init/). aparentemente debería acelerar el tiempo de carga y ayuda a evitar algunos problemas. realmente no me importa si hace algo mientras desarrollo, debería ayudar cuando salgo a la calle. –

Respuesta

11

La causa es una reciente bug que solo afecta al modo de espacio aislado. Apagué el modo sandbox y funcionó como un amuleto.

+1

¡Podría besarte! Muchas gracias. Me he pasado TODA la noche probando y probando cosas ... No entendí lo que pasó ... Buen trabajo Facebook. 6 meses después, el problema aún persiste ... –

+1

El enlace está ahora muerto. –

0

intentar forzar la carga de la prueba:

FB.getLoginStatus(function(response) { 
    alert('whoo hoo!!! getLoginStatus called the callback'); 
}, true); 

Se afirma en FB.getLoginStatus.

Es posible que el evento no se active en algunas situaciones.

+0

intenté eso, no me alegro –

+0

Añadiendo verdadero para forzar la carga solucionó el problema de no respuesta para mí! –

Cuestiones relacionadas