2011-08-29 10 views
10

Sto lavorando a un'applicazione Facebook che è integrata con Facebook e sto cercando di ottenere la sessione FB dell'utente. Per quanto ho capito, uno scenario di utilizzo comune è il seguente.FB.getLoginStatus non si attiva se l'utente non ha effettuato l'accesso a Facebook

  1. chiamata FB.init()
  2. chiamata FB.getLoginStatus dandogli un callback appropriata.

Ho eseguito il seguente codice (l'ID dell'applicazione).

<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> 

Se l'utente è già connesso a facebook nella stessa sessione del browser allora tutto funziona come previsto - la restituzione del popolato _response.authResponse_. Tuttavia, se l'utente non ha effettuato l'accesso a Facebook, la richiamata non viene attivata. Controllando il registro di rete del browser, vedo che Facebook restituisce la risposta seguente (richiesta da 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.

ho controllato questo su Chrome e Firefox (Mac).


Aggiornamento

Vorrei ringraziare tutti coloro che hanno risposto.

Il commento di Ben ha avuto la risposta.

Grazie Ben - mi hai salvato un sacco di frustrazione.

+12

La tua app è in modalità Sandbox? Se è così sembra che ci sia un bug che potrebbe causare questo: http://bugs.developers.facebook.net/show_bug.cgi?id=19359 –

+0

Stai usando channelUrl come loopback, o è solo per esempio? Non credo che loopback funzionerà per quella funzione. –

+0

l'uso di channelUrl è spiegato [qui] (https://developers.facebook.com/docs/reference/javascript/FB.init/). a quanto pare dovrebbe velocizzare il tempo di caricamento e aiuta a evitare alcuni problemi. non mi interessa davvero se fa qualcosa mentre io sviluppo, dovrebbe aiutare quando vado dal vivo. –

risposta

11

La causa è un recente bug che interessa solo la modalità sandbox. Ho spento la modalità sandbox, e ha funzionato come un fascino.

+1

Potrei baciarti! Grazie mille. Ho passato tutta la notte a provare e provare cose ... Non ho capito cosa sia successo ... Bel lavoro Facebook. 6 mesi dopo, il problema rimane ... –

+1

Link è ora morto. –

0

provare a forzare il caricamento della manifestazione:

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

Si afferma in FB.getLoginStatus.

L'evento potrebbe non essere attivato in alcune situazioni.

+0

provato quello, nessuna gioia –

+0

Aggiunta vera per forzare il carico risolto il problema di non risposta per me! –

Problemi correlati