2012-03-27 10 views
7

Ho sperimentato con l'API di Facebook utilizzando l'SDK di Javascript. Ogni volta che ho effettuato l'accesso a Facebook posso chiamare abbastanza affidabile:https://graph.facebook.com/me/albums a volte non restituisce nulla

function init() { 
    // Called after loading the Facebook SDK 
    FB.api("/me", function(response) { 
     console.log(response.first_name); // "John" (always works) 
    }); 
} 

ma voglio anche per ottenere un album fotografici degli utenti (quando si fa clic su un link) e per qualche motivo questa chiamata funziona solo a intermittenza:

$(document).ready(function) { 

    $("#get-albums-link").click(function() { 
     var accessToken = "456"; // Just an example 
     FB.api("/me/albums?access_token=" + accessToken, function(response) { 
      console.log(response); // An empty object about 40% of the time 
     }); 
    }); 

}); 

In questo caso, posso aprire una nuova scheda e verificare che anche le query dirette restituiscano lo stesso risultato vuoto (si noti che sebbene questo possa essere un problema di autorizzazione, non vi è alcuna indicazione evidente che lo è: è semplicemente un vuoto Oggetto JSON):

<!-- An HTTPS GET at https://graph.facebook.com/me/albums?access_token=456 --> 
{ 
    "data": [ 

    ] 
} 
+0

Sei sicuro che il token di accesso che stai utilizzando abbia l'autorizzazione per le foto? –

+0

Non ho passato molto tempo con il caching dell'API di Facebook, ma ho riscontrato lo stesso problema con le chiamate ajax() di jQuery. Chiamare esplicitamente query con jsonp o impostare un flag nocache aiuta il browser a continuare a effettuare chiamate. Si consiglia di iniziare con un controllo cache di Facebook –

+0

@FelipeBrahm, dovrebbe essere un access_token corretto, perché dopo tutto, a volte ottengo un oggetto Albums. Sono solo altre volte, no. Potrebbe sicuramente essere un problema di cache, dato che sembra funzionare correttamente per circa 15 minuti prima di restituire oggetti vuoti. Se aspetto 20 minuti e lo aggiorno di solito funziona di nuovo per altri 15 minuti. – Andrew

risposta

1

Come sottolineato da Felipe sopra, il token di accesso può essere il problema, poiché non avere le autorizzazioni impostate restituirà {"dati": []}. Provate voi stessi: https://developers.facebook.com/tools/explorer/?method=GET&path=me%2Falbums

Inoltre, anche se si tratta di un auth_token valida, l'SDK non richiede uno, così non ne fanno uso. Si potrebbe finire con qualcosa come graph.facebook.com/me/albums?access_token=123423 & access_token = 981234 (secondo token di accesso aggiunto da SDK). Io, personalmente, non so come sia costruita la funzione FB.api, ma seguo semplicemente i documenti: https://developers.facebook.com/docs/reference/javascript/FB.api/

Fammi sapere se hai ancora problemi.

+0

grazie per la risposta. Non voglio sfortunare me stesso, ma il problema sembra essere andato via. Vorrei avere una buona spiegazione. Le cose che sono diverse ora sono: (1) Sono passate alcune settimane da quando ho toccato il codice. Forse le cose avevano solo bisogno di "sistemarsi" con la mia app appena registrata su Facebook. (2) Non uso le chiamate 'FB.api (...)' per recuperare gli album, uso '$ .ajax (..)' di jQuery direttamente. (3) Nel summenzionato '$ .ajax (...)' richiama I _do_ nel token di accesso. – Andrew

Problemi correlati