2014-06-10 112 views
1

我想從Facebook獲得一些數字,告訴我哪些帖子對於給定Facebook頁面以及給定日期範圍內的喜歡,評論和份額最多。如何從Facebook的API獲得最受歡迎,評論和共享的帖子

我可以得到這些數字,如果我查詢API獲取所有單獨的帖子,並通過他們在我自己的代碼中循環,但我經常從API「600每秒600次呼叫」的速率限制錯誤從他們那裏,因爲我正在爲每個職位打電話。我試過使用FB的批處理圖形請求,但這並沒有減少獲得該錯誤的可能性。

有沒有辦法做到這一點,我不需要打這麼多的電話?

+0

要找到一個最流行的,獨立的API調用是去我認爲唯一的出路。/page/statuses會在一次調用中返回所有帖子。但是如果您有超過600個狀態更新需要比較,則可能需要等待10分鐘。 – Fredrik

回答

3

是的,你必須進行個別的API調用。批量api請求計爲正常請求[0]:

例如,一批10個API調用將計爲10個調用,批處理中的每個調用都以相同方式對CPU資源限制作出貢獻。

我的技巧:在數據庫

    • 化妝圖形API調用服務器端和存儲結果使每次通話
    • 之間有一些延遲,你可以通過做一些延遲增加你的請求限制在每個
    • 之間
    • 使用多個擴展頁面訪問令牌[1]併爲每個呼叫選擇隨機數
    • 使用sdk進行調用 - 您可以使用sim通過例如GET GET請求。捲曲https://graph.facebook.com/post_id?access_token=access_token

    [0] - https://developers.facebook.com/docs/graph-api/making-multiple-requests/#limits

    [1] - https://stackoverflow.com/a/17234650/1587309

  • +0

    如何使用簡單的GET請求而不是sdk幫助? sdk不是隻是自己做相同的GET請求嗎? – MakkyNZ

    +0

    由於通常速度更快,因此您的授權基於簡單訪問令牌,而不是基於同一應用程序發佈的應用程序ID和應用程序祕密以及用戶/頁面訪問令牌對。您可以簡單地生成5個應用程序,每次都可以獲得普通的擴展頁面訪問令牌和rand訪問令牌,以繞過API速率限制。 – smalu

    +0

    我懷疑你說的是對的。 FB SDK只是對https://graph.facebook.com端點的低級別HTTP調用的封裝。使用頁面訪問令牌並沒有真正的幫助,因爲對於很多操作,您需要一個實際的用戶訪問令牌 – Tobi

    0

    您可以使用FQL(這將提供至少要等到2016年4月30日)在一個調用來實現:

    select post_id, comment_info.comment_count, like_info.like_count, share_info.share_count from stream where source_id={PAGE_ID} 
    

    只需將{PAGE_ID}替換爲實際的頁面ID。您還可以通過具有read_stream權限的頁面訪問令牌運行此操作。

    如果你只想頁的帖子,添加以下到FQL查詢:

    and actor_id={PAGE_ID} 
    
    +0

    FQL將於2015年4月30日(Graph API v1.0結束)提供,並僅適用於2014年4月30日前創建的應用程序。https://developers.facebook.com/docs/reference/fql/ https:// developers.facebook.com/docs/apps/changelog/ – smalu

    +1

    正確理解您的事實:您引用的第一個鏈接是這樣說的:「2.0版的Facebook Platform API是FQL可用的最後一個版本。 2.0之後的版本將不支持FQL'這明確指出FQL將在v2.0中可用。 https://developers.facebook.com/docs/apps/versions/#howlong表示:「一個版本將在後續版本發佈日期的兩年後不再可用。因此,如果API版本2.0於2014年4月30日發佈,並且API版本2.1於2014年5月30日發佈,那麼v2.0將於2016年5月30日發佈,即v2.1發佈兩年後即可過期。# – Tobi

    +0

    好吧,我同意與你有關FQL。 – smalu

    相關問題