Facebook Analytics-获取Facebook帖子的分享计数吗?

时间:2018-09-24 13:42:46

标签: php wordpress facebook api facebook-graph-api

我正在使用Facebook分析(https://developers.facebook.com/)来获取一个Facebook帖子(在wordpress网站上)的共享计数,并且在有人向该帖子提出一些请求之前(当我访问我网站上的帖子,我向facebook api发出请求以获取每个帖子的股份数)。在我对帖子发出一些请求后,例如:http://kosovotwopointzero.com/sistemi-i-shendetesise-nen-mikroskop/,由于它不起作用,我目前无法显示股份数量,因此将facebook api称为:

这是我使用的功能

function get_url_shares_count($url = '') {
    $fbUrl = 'https://graph.facebook.com//v2.1/?id='.$url.'&access_token=??|??';
    $request = wp_remote_get($fbUrl);
    $data = json_decode($request['body']);

//  return $data[0]->share_count;
    return is_null($data->share) ? 0 : $data->share->share_count;
}

但是几乎所有时候API都会向我返回:

{
    "error": {
        "message": "(#4) Application request limit reached",
        "type": "OAuthException",
        "is_transient": true,
        "code": 4,
        "fbtrace_id": "GDs+M7u/zoO"
    }
}

请您帮我找到解决方案吗?这是Facebook的政策限制或我们正在使用的功能吗?

如果您通过有效的任何插件或如何与Facebook联系的方式来帮助我们找到解决方案(如果有必要)。

1 个答案:

答案 0 :(得分:0)

我建议要么获取数据,要么

  • 一个小时一次
  • 每次用户再次登录

如何?

类似的事情应该起作用:

function YourFunctionName()
{
    $HourAgo = date('m/d/Y h:i:s a', time() -(3600));
    $newload = false;

    if (isset($_SESSION['LastApiCall'])) {
        if (strtotime($HourAgo) >= strtotime($_SESSION['LastApiCall'])) {
            $newload = true;
        }
    }else{
        $newload = true;
    }

    if ($newload) {
        $content = 'your_url'
        $_SESSION['apiData'] = json_decode($content);
       // Handle api data
        $_SESSION['LastApiCall'] = date('m/d/Y h:i:s a', time());
    }
}

如果用户正在注销,则每次重新加载时都要检查YourFunctionName(),销毁每个会话

注意:没有对此进行测试