facebook 分享计数 - 具有不同 URL 的 FQL 问题

问题描述 投票:0回答:1

我的页面上有一个插件,允许用户在 Facebook 上分享我网站上的文章,但每个 URL 都附加了他们的用户 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

php facebook facebook-fql
1个回答
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
为您提供链接的共享数量。

如果您有多个要查询的 URL,您可以使用

OR
:

在一次查询中完成所有这些操作
SELECT url, total_count FROM link_stat WHERE url="..." OR url="..."

这里有一个例子,您想要获取这 3 个 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] => ...
}

然后你只需遍历数组即可求和。

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.