如何在Facebook上获得照片的份额?

时间:2012-02-22 02:41:18

标签: facebook facebook-graph-api

通过使用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获得喜欢和评论)

3 个答案:

答案 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 ..

您可以在此处查看结果如何:http://developers.facebook.com/tools/explorer?fql=SELECT%20url%2C%20normalized_url%2C%20share_count%2C%20like_count%2C%20comment_count%2C%20total_count%2C%0Acommentsbox_count%2C%20comments_fbid%2C%20click_count%20FROM%20link_stat%20WHERE%20url%3D%22http%3A%2F%2Fwww.facebook.com%2Fphoto.php%3Ffbid%3D364861533533284%22

以下是如何使用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'];

        ?>