2015-03-24 95 views
1

我們的網站使用我們自己的評論系統(簡單的PHP/MySQL),也是fb評論插件。我希望能夠添加每個評論計數以顯示來自兩者的單個評論總數。看起來很簡單。Facebook Graph API評論數突然停止工作

幾個月前,我得到了這個工作。然後它突然停止工作。今天早上,我找到了一個新的方法來做到這一點。在一個頁面上工作,當我將代碼添加到所有我們有評論的頁面時,它就不再有效。

我拉着我的頭髮試圖得到這個工作,幾乎沒有理解JSON。 FB API瀏覽器給我提供了一個有關授權令牌的錯誤,但按照我推薦的方式進行的操作沒有任何效果(即創建一個新的fb應用程序幷包含它們提供的授權代碼塊)。

這是起初這個上午工作的罰款:

$fbcounturl = 'http://www.catalystathletics.com/articles/article.php?articleID=1902'; 
    $fbjsonurl = "https://graph.facebook.com/v2.1/?fields=share{comment_count}&id=" .$fbcounturl; 
    $fbdata = file_get_contents($fbjsonurl); 
    $fbarray = json_decode($fbdata, true); 
    $fbcomcount = $fbarray['share']['comment_count']; 
    print($fbcomcount); 

然後,我可以簡單地$ fbcomcount從我們的數據庫添加到$ comCount。

如果我只是瀏覽的網址,我得到罰款JSON信息:

{ 
    "share": { 
    "comment_count": 3 
    }, 
    "id": "http://www.catalystathletics.com/articles/article.php?articleID=1902" 
    } 

但是$ fbcomcount是空的。

這裏是一個網頁,將使用的一個例子 - http://www.catalystathletics.com/article/1902/Jumping-Forward-in-the-Snatch-or-Clean-Error-Correction/#comments

任何幫助,將不勝感激。

+1

您正在使用的內容不包括授權令牌。這是一個獨特的關鍵,它可以讓Facebook跟蹤你的服務器有多少點擊量,並根據他們的策略限制它們。 https://developers.facebook.com/docs/facebook-login/access-tokens閱讀他們的官方文檔。你需要追加你的json url&access_token = app_id | app_secret,你可以通過做你之前提到的系統告訴你做的事情來獲得它。 – 2015-03-24 21:57:28

+0

運行代碼時,$ fbdata,$ fbarray和$ fbcomcount是什麼? – WizKid 2015-03-24 21:57:29

+0

@EarleDavies在短暫的時間內它正常工作,它沒有令牌。然而,我的理解是,這確實是問題所在,但是由於似乎存在幾個相互矛盾的答案,所以我對我能找到的文檔和其他信息感到困惑。要傳遞令牌,我只需將id/secret添加到原始$ fbjsonurl中的查詢字符串中?我會盡快嘗試一次,我有機會。謝謝。 – gmoney 2015-03-25 23:40:27

回答

0

最近出現同樣的問題,Facebook的評論數字簡直停止了工作。在返回的JSON響應最終追查錯誤,告訴我Error #4 Application request limit reached

{"error":{"message":"(#4) Application request limit 
reached","type":"OAuthException","is_transient":true,"code":4,"fbtrace_id":"EUNAVRNgnFu"}}` 

這裏是在Facebook的Open Graph API限制的很好,詳細的迴應,我在別處找到了:

Facebook的API限制ISN真的沒有記錄,但顯然是這樣的:600 calls per 600 seconds, per token & per IP。由於網站被限制,引用相關部分:

經過與Facebook平臺團隊的一些測試和討論後,我沒有發現官方限制,或者可以在文檔中找到官方限制。但是,我發現每600秒600個呼叫,每個IP每個令牌&都是關於他們阻止你的地方。我也看到了一些基於應用程序的速率限制,但沒有任何數字。

作爲一般規則,每秒一個呼叫不應受到速率限制。從表面上看,這看起來非常嚴格,但請記住,您可以批量調用特定的調用並使用訂閱API來獲取更改。

正如您可以通過JavaScript SDK訪問客戶端的Graph API;我認爲,如果您旅行請求客戶端的照片,您不會碰到任何application limit,因爲它是用戶(每個用戶都有唯一ID)誰正在提取數據,而不是您的應用程序服務器(唯一ID)。

這可能意味着一個巨大的重構,如果你做的每件事都通過服務器。但是如果你有這麼多的請求,它似乎是最好的解決方案(因爲它會讓你的服務器喘一口氣)。

否則,你可以嘗試batch request,但我想你已經開始這樣了,如果你有很大的流量。


如果沒有這項工作,根據Facebook Platform Policy你應該聯繫他們。

如果超過或計劃超過,以下任何閾值取悅contact us,你可能會受到額外的條款:(> 500萬MAU)或(>每天100M API調用)或(> 50M印象每天)。