通过使用Graph API,我可以检索评论,喜欢内部和外部Facebook网址的数量。但我只能获得外部Facebook网址的股票数量
例如:
https://graph.facebook.com/?ids=http://www.youtube.com/watch?v=tu8BNocnVzc
但不是Facebook的一个:
http://graph.facebook.com/?ids=http://www.facebook.com/photo.php?fbid=364861533533284
如何获取Facebook对象的分享号?
(我可以通过使用此网址http://graph.facebook.com/364861533533284获得喜欢和评论)
答案 0 :(得分:2)
之前的答案是正确的 - 你应该使用FQL。它的速度较慢但有效。至于其余的 - 它根本不起作用,因为API不会返回照片链接的share_count,因为它是Facebook的内部,并且在链接本身或其他一些未知原因中有PHP参数。
API不会返回此类信息,因为它在大多数情况下是公开的,所以他们应该实现这一点,但是这不起作用。
那种有用的方法是检索与该照片相关的帖子链接并计算其份额。
下面是使用的代码:`
$photo_link = $photo['link'];
//First Query - Find the ID of the Post for the Photo
$query_post_id = "SELECT post_id, permalink FROM stream WHERE source_id = '[PAGE_OR_USER_ID]' AND permalink = '$photo_link'";
$fb_post_info = $facebook->api(array('method' => 'fql.query', 'query' => $query_post_id));
$id = $fb_post_info['0']['post_id'];
$whole_id = $fb_post_info['0']['post_id'];
$fb_post_id = explode('_', $id);
$fb_post_id = $fb_post_id['1'];
//Second Query - Find the Share Count Using the Post Link (not the Photo link)
$query_share_count = "SELECT share_count FROM link_stat WHERE url='http://www.facebook.com/[PAGE_OR_PERSONAL_USERNAME]/posts/$fb_post_id'";
$post_info = $facebook->api(array('method' => 'fql.query', 'query' => $query_share_count));
$share_count = $post_info['0']['share_count'];
echo $share_count;
?></span>`
第一个查询返回一个帖子ID和永久链接的数组。帖子ID如下所示:PAGEID_POSTID,例如3333333333_453536456464,因此我们必须将其拆分以获得第二部分,即永久链接中找到的帖子ID。
之后我们构建了帖子的链接,通常看起来像这样:facebook.com/USERNAME/posts/POSTID然后检索该链接的共享计数。在这里,您还可以使用Graph API获取share_count。
这是获取我迄今为止发现的信息的唯一方法 - 它有点草率,因为FQL较慢,有时候股票的更新没有出现一段时间,但正如我所说的那样 - 它有点工作。
答案 1 :(得分:0)
如果照片有相关的帖子和post_id - 那么您可以从流表中获取份额,否则您将只有链接,评论数量。
post_id还以 page_story_id 保存在照片表格中,
否则你可以尝试伪造它(连接所有者和对象ID),但现在总是如此,
或者您可以尝试按源+永久链接或attachment.media.link或created_time查找相关帖子(由于棘手的FB行为,在此情况下使用限制)
但是,如果没有任何相关帖子,我认为如果 page_story_id 在照片表中为空。
示例(php):
$query = array(
'photoInfo' => "SELECT object_id, aid, album_object_id, comment_info.comment_count, like_info.like_count, page_story_id, concat(owner, '_', object_id), owner, pid, images FROM photo where object_id='{$fbActivity['object_id']}'",
'postInfo' => "SELECT post_id, share_count, like_info.like_count, comment_info.comment_count, message FROM stream WHERE
post_id IN (SELECT page_story_id FROM #photoInfo)
OR post_id IN (SELECT anon FROM #photoInfo)
' //OR (source_id IN (SELECT owner FROM #photoInfo) AND permalink = '{$fbActivity['link']}') LIMIT 999
);
$t = $publicFb->api('/fql', 'GET', array('q' => $query));
答案 2 :(得分:-1)
您应该使用FQL并查询照片表https://developers.facebook.com/docs/reference/fql/photo或link_stat表https://developers.facebook.com/docs/reference/fql/link_stat ..
以下是如何使用FQL调用来获得结果:
<?php
$img_url='http://www.facebook.com/photo.php?fbid=364861533533284';
$query_url="https://api.facebook.com/method/fql.query?query=
select%20total_count,share_count,like_count,comment_count,
commentsbox_count%20from%20link_stat%20where%20
url='" . $directory_url . "'&format=json";
$response = file_get_contents($query_url);
$response_array = json_decode($response, true);
$params=$response_array[0];
$total_count=$params['total_count'];
$like_count=$params['like_count'];
$comment_count=$params['comment_count'];
$share_count=$params['share_count'];
?>