回答“如何获得Facebook分享和喜欢某些网址?”问题

时间:2013-07-21 14:01:56

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

我正在建立一个网站,我需要检索Facebook共享,并喜欢来自不同网站的众多链接和网址。

问题是,对于某些网址,我们无法获得我想要的内容。例如,当我查找有关http://www.example.com/?a=1&b=2&c=3的链接的数据时,我得到的是关于http://www.example.com/?a=1的错误数据,而其他网址(&b=2&c=3)则被Facebook忽略。

在StackOverflow,很多人都在寻找答案,很多问题都没有答案。所以,一旦我做对了,我就回去告诉我是怎么做到的。

P.S。 :这仅适用于非Facebook网址。如果您正在寻找股票并喜欢内部Facebook链接的数量(图像,视频...),这将不适合您。我将使用PHP来回答这个问题。

1 个答案:

答案 0 :(得分:0)

为了获得喜欢和分享计数,我使用FQL而不是Graph API(即使我实际上使用Graph API来发送查询)。

但这还不够:为了能够这样做,我在我想要获取数据的URL上调用了rawurlencode()函数。否则,我会不断收到错误。

所以,这个likes(),我用来计算的函数:

function likes($url) {
    $url = rawurlencode($url);
    $json_string = file_get_contents("http://graph.facebook.com/fql?format=json&q=SELECT%20share_count,%20like_count%20FROM%20link_stat%20WHERE%20url='$url'");
    $json = json_decode($json_string, true);
    if (key_exists("data", $json)) {
        if (is_array($json["data"])) {
            if (array_key_exists("0", $json["data"])) {
                return intval($json["data"]["0"]["share_count"]) + intval($json["data"]["0"]["like_count"]);
            } else {
                echo "Error : '0' is no key<br/>";
                return 0;
            }
        } else {
            echo "Error : data is no table <br/>";
            return 0;
        }
    } else {
        echo "Error : No data key <br/>";
        return 0;
    }
}

我希望有一天能帮助某人:)