2012-01-12 27 views
8

我建立一個Facebook應用程序,我希望它能夠讀取從過去一年的所有用戶的狀態。當我進行API調用時,無論我設置了什麼限制,我只能檢索前100個狀態。如何使用Facebook API調用超過100個狀態?

下面是我使用撥打電話的網址: https://graph.facebook.com/me/statuses?limit=100&access_token= ...

當我設定的下限,這表明較少的狀態(證明的限制參數工作)。當我將限制設置得更高時,它只給出了前100個。當我使用'since'時,它仍然只給我100.

當我使用'next'url時,前100個狀態。

我知道這是可能得到比這更多的是因爲如My Year In Status

回答

4

我使用你所描述的分頁不工作的圖形API資源管理器驗證的應用程序。將其記錄爲Facebook的錯誤:https://developers.facebook.com/bugs,並在此處發佈錯誤#。

編輯

每臭蟲關閉,100個限制是通過設計,你不會得到不止於此,這意味着Facebook已經做出一個意識的企業決策的極限量數據它具有存儲,處理,並從圖形API服務。這樣做需要花錢,而且由於API可以自由使用,所以我不能與他們爭論。但是,如果我爲此付出代價,那麼我會在路上一路狂飆。

+0

https://developers.facebook.com/bugs/155458081230560 – 2012-01-13 00:24:21

+0

這個回答你的問題?從Facebook – DMCS 2012-01-30 06:17:49

+0

雷說,你只能看到100點的狀態_at設計once_,但您可以使用分頁看多。然而,分頁不起作用,所以他的答案沒有成立。無論如何,它已被重新分配,所以他們正在努力。他從來沒有說過,你應該只能檢索100個狀態。 – 2012-01-31 06:33:16

1

這個工作作爲一個星期前,我們最好的辦法得到這個固定的是張貼在http://developers.facebook.com/bugs/155458081230560所以Facebook開發知道問題到底有多大,這是。

+0

看起來正在獲得一些動力。希望他們能儘快解決它。 – 2012-01-14 06:55:09

0

的Facebook關閉了以前的錯誤沒有真正的測試,看看它沒有工作。我在這裏做一個新的bug:https://developers.facebook.com/bugs/242235199184053

+0

其實他們沒有這麼說。他們表示100限制是設計。查看我更新的答案和附加信息。 – DMCS 2012-01-27 00:15:58

3

尋呼由於直到參數不是爲我工作了。

但是我發現,我能夠使用Offset參數獲得超過100個狀態。 下面是一個使用Facebook的C#SDK我的代碼:

var fb = new FacebookClient(accessToken); 

string connection = "statuses"; 
string urltemplate = "https://graph.facebook.com/me/{0}?limit={1}&offset={2}"; 

int limit = 25;  //items on one page (Max is value 100) 
int offset = 0; 

var statuses = (IDictionary<string, object>)fb.Get(string.Format(urltemplate, connection, limit, offset)); 

while (statuses != null && statuses.ContainsKey("data") && ((Facebook.JsonArray)statuses["data"]).Count > 0) 
{ 
    var dataItems = (Facebook.JsonArray)statuses["data"]; 

    foreach (Facebook.JsonObject item in dataItems) 
    { 
     //TODO: process item data 
     System.Diagnostics.Debug.WriteLine(item["message"]); 
    } 

    offset += limit; 
    statuses = (IDictionary<string, object>)fb.Get(string.Format(urltemplate, connection, limit, offset)); 
} 
6

它的工作。您必須同時使用limitoffset查詢參數。 limit參數設置批量大小。 offset參數設置用戶的所有時間狀態集合中的位置。如果不指定offset參數,Facebook的默認值是零,這就是爲什麼你總是看到同樣的數據集。

對於第一批次100點的狀態的,設置於limit100offset0
對於第2批100個狀態的,設置於limit100offset100
對於第三批次100個狀態的,設置於limit100offset200
對於第四批次100點的狀態的,設置於limit100offset300
等等...

保持迭代,直到你得到一個空的數據集:

{ 
    "data": [] 
} 
+0

非常感謝。 – n1c9 2016-05-20 04:42:52