2012-03-27 60 views
7

我一直在使用JavaScript SDK試驗Facebook API。每當我登錄到Facebook上,我可以很可靠地打電話:https://graph.facebook.com/me/albums有時不會返回任何內容

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

但我也希望得到一個用戶的相冊(當他們點擊一個鏈接),並由於某種原因,這個調用只能間歇性地:

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

}); 

發生這種情況時,我可以打開一個新的選項卡,驗證甚至直接查詢返回此相同的空結果(請注意,雖然這可能是一個授權問題,沒有明顯的跡象表明它是,它只是一個空JSON對象):

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

    ] 
} 
+0

您確定您使用的access_token具有照片權限嗎? – 2012-03-27 01:06:04

+0

我沒有花時間使用Facebook API緩存,但我看到了jQuery的ajax()調用的相同問題。使用jsonp顯式調用查詢或設置nocache標誌可幫助瀏覽器繼續進行調用。您可能希望從facebook緩存控件 – 2012-03-27 01:07:08

+0

@FelipeBrahm開始,它應該是一個正確的access_token,因爲畢竟有時候我會得到一個專輯對象。這只是其他時間,我不知道。可以肯定是一個緩存問題,因爲它似乎在返回空對象之前約15分鐘正常工作。如果我等20分鐘並刷新它通常再工作15分鐘。 – Andrew 2012-03-27 01:12:31

回答

1

正如Felipe上面指出的那樣,訪問令牌可能是問題,因爲沒有設置權限將返回{「data」:[]}。嘗試一下:https://developers.facebook.com/tools/explorer/?method=GET&path=me%2Falbums

此外,即使它是一個有效的auth_token,SDK不需要一個,所以不要使用它。您最終可能會得到類似graph.facebook.com/me/albums?access_token=123423 & access_token = 981234(由SDK添加的第二個訪問令牌)。我個人不知道FB.api函數是如何構建的,但只需按照文檔:https://developers.facebook.com/docs/reference/javascript/FB.api/

讓我知道你是否仍然有問題。

+0

感謝您的回覆。我不想嘲笑自己,但問題似乎已消失。我希望我有一個很好的解釋。現在不同的事情是:(1)我已經觸摸了代碼已經過了幾個星期。也許剛剛在Facebook上註冊的應用需要「解決」。 (2)我不使用'FB.api(...)'調用來檢索相冊,我直接使用jQuery的'$ .ajax(..)'。 (3)在上述'$ .ajax(...)'調用中,I _do_傳遞訪問令牌。 – Andrew 2012-04-28 03:07:01

相關問題