0

我正在建立一个网站,我需要在其中检索来自不同站点的大量链接和 URL 的 Facebook 共享和喜欢。

问题是,对于某些 URL,不可能得到我想要的。例如,当我查找有关链接的数据时,http://www.example.com/?a=1&b=2&c=3我得到的只是错误的数据http://www.example.com/?a=1,而 URL 的其余部分 ( &b=2&c=3) 会被 Facebook 简单地忽略。

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

PS:这仅适用于非 Facebook URL。如果您正在寻找 Facebook 内部链接(图片、视频......)的分享和喜欢计数,这对您不起作用。我将使用 PHP 来回答这个问题。

4

1 回答 1

0

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

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

所以,这个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;
    }
}

我希望有一天这会对某人有所帮助:)

于 2013-07-21T14:01:56.470 回答