Facebook共享计数 - 具有不同URL的FQL问题

时间:2011-03-06 21:01:40

标签: facebook facebook-fql

我的页面上有一个插件,允许用户在我的网站上分享Facebook上的文章,但每个网址都附有他们的用户ID。

我想要做的是计算总分享数,而不考虑使用者的用户ID。

但是我无法让FQL工作,因为where参数不接受LIKE函数..

页面将类似于:

page1.php中?SID = 2 page1.php中?SID = 34 page1.php中?SID = 12

但我想检索page1.php的总份额而不管sid。

LIKE功能在FQL中不起作用任何人都有任何想法,因为我正在努力

当前代码:

https://api.facebook.com/method/fql.que ... ge1.php%27

1 个答案:

答案 0 :(得分:1)

您可以使用FQL进行查询:

$fql = 'SELECT total_count FROM link_stat WHERE url="http://google.com"';
$json = file_get_contents('https://api.facebook.com/method/fql.query?format=json&query=' . urlencode($fql));
$data = json_decode($json);
echo $data[0]->total_count;

此处,total_count为您提供链接的份额数。

如果您有多个要查询的网址,则可以使用OR在一个查询中完成所有这些操作:

SELECT url, total_count FROM link_stat WHERE url="..." OR url="..."

以下是一个示例,您希望获得这些网址的份额数:

$urls = array(
    "http://www.example.com/page1.php?sid=2",
    "http://www.example.com/page1.php?sid=12",
    "http://www.example.com/page1.php?sid=34",
);

function wrap($url) {
    return 'url="' . $url . '"';
}

$fql = 'SELECT url, total_count FROM link_stat WHERE ';
$fql .= implode(" OR ", array_map("wrap", $urls));

$json = file_get_contents('https://api.facebook.com/method/fql.query?format=json&query=' . urlencode($fql));
$data = json_decode($json);

$data是一个包含3个对象的数组,每个URL都有一个共享编号:

array(4) {
  [0]=> object(stdClass)#2 (2) {
    ["url"]=> string(17) "http://www.example.com/page1.php?sid=2"
    ["total_count"]=> int(1318598)
  }
  [1] => ...
  [2] => ...
  [3] => ...
}

然后你只需要通过数组来计算总和。

希望有所帮助!