2011-03-04 7 views
21

El título realmente lo dice todo. En algunas condiciones (indeterminadas), FB.getLoginStatus() simplemente deja de funcionar y no invocará la devolución de llamada que le di. Las únicas pistas interesantes que he encontrado sonFB.getLoginStatus no llama a su devolución de llamada

  • FB.Auth._loadState se ha quedado atascado en la "carga" - lo que se supone que debe hacer clic a "cargado" no está ocurriendo
  • ligeros retrasos como poner en alert() llamadas tienden a hacerlo empezar a funcionar

Cualquier sugerencia sobre cómo investigar esta bienvenida.

+1

ocurre de manera confiable inmediatamente después de que un usuario haya eliminado su aplicación – Martin

+0

Estoy experimentando esto también. ¿Recibes la ventana emergente de inicio de sesión de Facebook con un mensaje de error de Facebook o la ventana emergente no sucede? Para mí, la ventana emergente dejó de funcionar (y no está siendo bloqueada, simplemente no se ha llamado, tampoco hay devolución de llamada en JavaScript). – potench

Respuesta

5

Quizás esté utilizando la llamada asíncrona. Lo mismo sucedió cuando llamé a FB.init con window.fbAsyncInit. Todo lo que hice fue retrasar la FB.getLoginStatus con una función setTimeout

window.setTimeout(checkLogStatus, 1000); 


    function checkLogStatus(){ 
      alert("check"); 
      // fetch the status on load  
      FB.getLoginStatus(handleSessionResponse); 
    } 

Parecía funcionar después de que

+0

¡Funcionó asombrosamente! Disparo hermano! –

+0

¡Esto funcionó para mí! TQ! –

27

Esto suele suceder para mí cuando estoy corriendo la página con un dominio diferente de lo que se ha registrado en Facebook. Normalmente, esto es cuando estoy desarrollando localmente.

Si está ejecutando localmente, tendrá que configurar un servidor web local y luego modificar su archivo de hosts para señalar el dominio registrado a 127.0.0.1 con el fin de probar en su máquina local. Don olvide eliminar esa línea del archivo hosts cuando quiera probarla en el servidor.

+4

Sí, sí, sí! Finalmente. Creé una aplicación de Facebook hace años, pero nunca llegué a cambiar la URL. Es una pena en FB por no proporcionar un mensaje de error útil. – JnBrymn

12

De acuerdo con:

https://developers.facebook.com/bugs/240058389381072

No se puede poner su aplicación en el modo de recinto de seguridad, o de lo contrario no funcionará. Vaya a la configuración de su aplicación, avance y cambie. Esto me dejó perplejo por un par de horas hasta que descubrí el informe de error.

12

Tuve un problema similar con FB API. Resultó que mi aplicación de Facebook estaba mal configurada. Por favor, asegúrese de que este no sea el caso para usted. Mi problema era que mi parámetro "Site URL" en la aplicación FB apuntaba a https, pero estaba usando el protocolo http para el desarrollo. Cualquier llamada en contra de FB api después de FB.init no llamaba a mis funciones de devolución de llamada. Entonces, lo primero que debe hacer es verificar dos veces la configuración de la aplicación.

Ahora, si por alguna razón usted depende de la API de FB pero desea tener una opción de respaldo en caso de que sea inoperante, la solución con el temporizador debería estar bien para usted. Simplemente configure un temporizador y deshabilítelo si FB Api le da la respuesta adecuada. Si no, retroceda a alguna función personalizada que realizará alguna lógica adicional.

function callFbApi() { 
    var timeoutHandler = setTimeout(function() { requestFailed(); }, 1000); 

    function requestFailed() { 
     // When this happens, it means that FB API was unresponsive 
     doSomeFallbackWork(); 
     alert('hey, FB API does not work!'); 
    } 

    FB.getLoginStatus(function(response) { 
     clearTimeout(timeoutHandler); // This will clear the timeout in case of proper FB call 
     doSomeUsualWorkAfterFbReplies(); 

     return false; 
    }, true); 
} 
1

En la nueva versión de la aplicación desarrollador, usted tiene que asegurarse de haber puesto la URL correcta que está utilizando para acceder a la aplicación en el campo sitio web bajo la

Seleccione el modo de la aplicación se integra con Facebook

sección.

5

Si su aplicación está en modo de espacio aislado, Facebook actúa como si su aplicación fuera invisible para cualquiera que no esté listado como desarrollador de aplicaciones. Si no ha iniciado sesión, sería lógico pensar que su aplicación ahora es invisible.

La devolución de llamada solo se activará si se está inicializando con una aplicación visible. De lo contrario, se devuelve la siguiente respuesta:

<span>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. </span> 

Para obtener más información por favor ver mi comentario sobre este billete de errores: https://developers.facebook.com/bugs/240058389381072

0

Como otros han publicado, debe acceder a su sitio en la misma dirección URL que Facebook espera . Por ejemplo, si Facebook tiene una devolución de llamada "example.com" pero su navegador tiene "www.example.com", eso puede causar este problema.

Además, si su navegador no permite el uso de cookies de terceros, es posible que también vea este problema. O puede ver la devolución de llamada erroneously reporting the user is not connected.

0

Solo publicando una situación que tenía estaban llamando al FB.getLoginStatus no obtuve absolutamente ninguna respuesta.

Mi aplicación está diseñada para funcionar en una pestaña, y sólo entró en los pestaña URL de la página de administración de aplicaciones, y no el aplicación en Facebook (es decir, las direcciones URL de lona). La pestaña se carga perfectamente, pero las llamadas al SDK de FB JS no provocan ninguna respuesta.

1

Asegúrese de que el protocolo sea HTTPS y no HTTP.

1

Tuve un problema similar. El sitio funcionaba cada vez que abrí el navegador, pero falla cuando intenté volver a cargar.

La causa fue la falta de "www" en el nombre del sitio en las configuraciones de Facebook. Tenga en cuenta que poner "www" (como www.yoursite.com) funciona en ambas situaciones (yoursite.com o www.yoursite.com).

-1

En Facebook la aplicación Ajustes, vaya a Ajustes cliente OAuth, un vistazo a OAuth Válido redirigir URI

Asegúrese de que usted ha enumerado todos los URI que son los dominios de los cuales se invoca Facebook SDK. Por ejemplo:

enter image description here

que desarrollo en localhost: 5000 y desplegar a Heroku. Observe el formato: http://domain.name/

+0

Ninguna configuración de Client OAuth – Green

Cuestiones relacionadas