2012-04-16 79 views
3

我查詢在Facebook的圖形API資源管理器的數據的數據:Facebook的圖形API不響應時限制設置爲20

access_token="SECRET" 
GET https://graph.facebook.com/me/home?limit=20&until=1334555920&fields=id 

結果:

{ 
    "data": [ 
    ] 
} 

我感到非常震驚,因爲有許多飼料在我的「家」。

然後我試圖設置限制爲100,然後我得到一個飼料清單。

這是怎麼回事? 「limit」參數是否會影響圖形API的結果?


我試圖將限制增加到25並再次查詢,有一個feed。

那麼「限制」和「直到」之間有什麼關係?

回答

3

由於您試圖訪問的數據,Facebook的API可能有點奇怪,並且這個問題有幾個部分。

限制

返回數據時,限制應用,但權限和訪問控制生成,這與去年的這篇博客文章解釋過:Limits in the Graph API

權限

更重要的是,即使你給自己的每FB權限可能一個道理,你仍然無法訪問您所創建的一切。假設您在某個朋友的Feed上發佈了某些內容,但其Feed未設置爲公開隱私。使用您的令牌對該朋友的訂閱源進行的任何查詢都不會返回數據(或者至少在一年前就是如此)。

API本身

其中最真棒的錯誤我圖形API中發現,當我使用它去年是處理分頁的方式。圖形API允許使用三種過濾器:限制,偏移和自/直到。 Facebook推薦的地方(以及正確的做法)您可以儘可能使用since/until日期進行分頁。忽略辯論,爲什麼你會做一個理論基礎上對偏移,在實際的一慣隨時間退化以下查詢:

// This obviously isn't valid as written, but you the params change as described 
limit=fixed-value&offset=programmatic-increase&since=some-fixed-date-here 

原因:日期範圍和偏移,不守規矩彼此。作爲一個例子,說我做了以下初始查詢:

// My example query 
limit=20&since=1334555920 

--> {#1,#2, ... #20} 

當然,你會想頁面更多的數據。其結果將是這樣的(我不記得確切的格局,但上方n將是重複和結果名單將通過n/2或類似的東西被截斷):

// My example query 
limit=20&since=1334555920&offset=20 

---> {#10, #11 ... #25} 

我從來沒有想通了爲什麼會發生這種情況,但最終查詢會逐漸減少,不會返回任何結果,並且只能獲得50-100個獨特值。如果您僅使用日期進行分頁,只要數據允許,您可以繼續。

這是與此警告,這是一個錯誤,這是從前一陣子。這裏的主要教訓是,如果不修改我的查詢來使事情完全相同(特定的日期範圍基於帖子#10-30,而限制= 20,偏移量= 10),我永遠不會發現此錯誤,但是結果非常不同。