簡體   English   中英

突然的 Facebook API 速率限制錯誤(試圖獲取共享計數)

[英]Sudden Facebook API Rate Limit Error (Trying to Get Share Count)

我在這里查看了大量相關帖子,但似乎找不到答案。 幾個月來,我一直在使用相同的代碼來獲取我網站上頁面的 Facebook 共享計數。 它[相對]完美地工作,但突然它開始什么也沒返回。 在瀏覽器中嘗試源代碼 URL 后,我意識到它拋出了 API 限制錯誤。 請幫忙...

代碼:

[[[FUNCTION]]]
    return jQuery.ajax({
        url: 'https://graph.facebook.com/?fields=engagement&callback=FB.Share&id=' + permalinkWPSC + '&access_token=[[[ACCESS TOKEN]]]',
        type: 'GET',
        dataType: 'JSONP',
        success: function(data) {           
            count = 0;
            if (data.engagement) {  
                var count = Number(data.engagement.reaction_count + data.engagement.share_count + data.engagement.comment_count);
                var share_count_http = 0;
                if ($('[data-share-count]').length > 0) {
                    share_count_http = parseInt($('[data-share-count]').data('share-count'));
                }
                count = count + share_count_http;
            }

            $( ".share-num" ).html( count );
            $( "span.fbCount" ).html( count );
        }
    });
[[[END FUNCTION]]]

So this is essentially using this URL string (with "URL" being actual URL and "ACCESSTOKEN" being the access token granted by the Facebook API: https://graph.facebook.com/?fields=engagement&callback=FB.Share&id=URL&access_token =訪問權限

錯誤:

/**/ FB.Share({
   "error": {
      "message": "(#613) Calls to graph_url_engagement_count have exceeded the rate of 10 calls per 3600 seconds.",
      "type": "OAuthException",
      "code": 613,
      "fbtrace_id": "Ad9vIHStlvzuGptF9LZmT-L"
   }
});

請注意,網站或流量沒有其他任何變化。 很奇怪...

答案在錯誤消息中:

#613) 對 graph_url_engagement_count 的調用已超過每 3600 秒 10 次調用的速率。

他們最近改變了這一點。

api 文檔( https://developers.facebook.com/docs/graph-api/reference/v10.0/url )說:

每個應用程序每小時每個 URL 限制為 10 個 GET 請求。

它還說:

“請注意,參與度值故意不精確,但您可以確信它們准確地反映了 URL 的用戶參與度。”

在實踐中,這似乎意味着如果喜歡、分享或評論低於某個數量,則顯示為零。

您正在總結所有參與計數,因此您可能想嘗試訪問“og_object {engagement}”字段而不是“參與”,它似乎不受速率限制的影響。 編輯:這是您編輯的代碼以使用它。

[[[FUNCTION]]]
    return jQuery.ajax({
        url: 'https://graph.facebook.com/?fields=og_object{engagement}&callback=FB.Share&id=' + permalinkWPSC + '&access_token=[[[ACCESS TOKEN]]]',
        type: 'GET',
        dataType: 'JSONP',
        success: function(data) {           
            count = 0;
            if (data.og_object) {  
                var count = Number(data.og_object.engagement.count);
                var share_count_http = 0;
                if ($('[data-share-count]').length > 0) {
                    share_count_http = parseInt($('[data-share-count]').data('share-count'));
                }
                count = count + share_count_http;
            }
            $( ".share-num" ).html( count );
            $( "span.fbCount" ).html( count );
    });
[[[END FUNCTION]]]

除了速率限制問題,更大的問題是他們在 2021 年 5 月 25 日推出的 Graph API 更改。版本 10 及更高版本現在有這個新規定( 來源):

由於隱私問題,GET /?id={url}/engagement 請求返回的計數可能與原始計數不匹配。

然而,它並沒有就此結束。 Facebook 團隊在一些錯誤報告中回應說,參與次數少於 100 的帖子將不再顯示任何數據。 雖然這很好,但並不准確,因為我有一些帖子有超過 100 次參與,但仍然沒有返回任何內容。

在此處輸入圖像描述

一些參與度超過 100 次的帖子仍然會返回數據。 更大的問題是,我看到的不准確。 Facebook 似乎並沒有花時間在他們的最后進行正確的測試。

我已經評論了一些 Facebook 錯誤報告以及其他錯誤報告,因為我們希望從 Facebook 獲得更好的答案。

我還在這里寫了一個更長的摘要: https://novashare.io/docs/facebook-share-counts-graph-api-v10/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM