2012-03-27 12 views
7

Eksperymentowałem z interfejsem API Facebooka, używając pakietu JavaScript SDK. Ilekroć jestem zalogowany na Facebook mogę całkiem wiarygodnie zadzwonić:https://graph.facebook.com/me/albums czasami nic nie zwraca

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

Ale też chcą dostać albumy użytkownicy ze zdjęciami (po kliknięciu linku) iz jakiegoś powodu to wezwanie działa tylko sporadycznie:

$(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 
     }); 
    }); 

}); 

Kiedy to się stanie, mogę otworzyć nową kartę i sprawdzić, czy nawet bezpośrednie zapytania zwracają ten sam pusty wynik (zauważ, że chociaż może to być problem z autoryzacją, nie ma wyraźnego wskazania, że ​​tak jest, jest to po prostu pusty Obiekt JSON):

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

    ] 
} 
+0

Czy jesteś pewien, że token dostępu, którego używasz, ma uprawnienia do zdjęć? –

+0

Nie spędziłem czasu z buforowaniem API Facebooka, ale widziałem ten sam problem z wywołaniami ajax() jQuery. Jawne wywoływanie zapytań za pomocą jsonp lub ustawianie flagi nocache pomaga przeglądarce kontynuować nawiązywanie połączeń. Możesz zacząć od kontroli pamięci podręcznej facebooka –

+0

@FelipeBrahm, powinien to być prawidłowy access_token, ponieważ przecież czasami otrzymuję obiekt Albums. Po prostu w innych przypadkach nie. Z pewnością może to być problem z buforowaniem, ponieważ wydaje się działać poprawnie przez około 15 minut przed zwróceniem pustych obiektów. Jeśli poczekam 20 minut i odświeżę, zwykle działa ponownie przez kolejne 15 minut. – Andrew

Odpowiedz

1

Jak wskazał Felipe powyżej, problem może stanowić token dostępu, ponieważ brak zestawu uprawnień zwróci {"dane": []}. Wypróbuj: https://developers.facebook.com/tools/explorer/?method=GET&path=me%2Falbums

Ponadto, nawet jeśli jest to prawidłowy auth_token, SDK go nie wymaga, więc nie używaj go. Możesz skończyć z czymś takim jak graph.facebook.com/me/albums?access_token=123423 & access_token = 981234 (drugi token dostępu dodany przez SDK). Osobiście nie wiem, jak została zbudowana funkcja FB.api, ale postępuj zgodnie z instrukcjami: https://developers.facebook.com/docs/reference/javascript/FB.api/

Daj mi znać, jeśli nadal masz problemy.

+0

dzięki za odpowiedź. Nie chcę się denerwować, ale wydaje się, że problem zniknął. Chciałbym mieć dobre wytłumaczenie. Rzeczy, które teraz są różne, to: (1) Minęło kilka tygodni odkąd dotknąłem kodu. Może rzeczy po prostu potrzebowały "uregulować" moją nowo zarejestrowaną aplikację na Facebooku. (2) Nie używam wywołań 'FB.api (...)' do pobierania albumów, ja używam bezpośrednio 'jquery' $ .ajax (..) '. (3) We wspomnianych wcześniej wywoływaniach '$ .ajax (...)' _do_ przekazuję token dostępu. – Andrew

Powiązane problemy