繁体   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