2010-06-15 53 views
4

这是一个棘手的问题,你如何得到一个facebook对象,如专辑或照片的计数?我知道Facebook有一个名为link_stat的fql表,它允许你为外部url获得类似的计数,但如果对象在facebook内,它似乎不起作用。如果您通过特定对象上的opengraph api访问喜欢,它将只返回最多4个喜欢该对象的用户,即使可能有几千个喜欢它的用户。任何线索?如何通过fql查询facebook对象的相似计数,例如相册或照片?

+0

它不起作用,我已经试过了。看起来Facebook并不愿意公开分享这些数据。 – dickyj 2010-09-30 15:58:22

+0

发布你试过的代码,因为它适合我。 – Bot 2010-09-30 23:05:10

回答

1

我能够通过更改隐私设置来做到这一点。如果您查询XYZ用户喜欢的表格,它将不会返回数据,除非用户已将可见性设置为朋友(用于照片,相册,视频,链接或笔记),无论您是否已经请求了权限(从您的应用程序中)。

因此,例如,我是XYZ用户,我喜欢我的GHI发布的某个链接。我使用为Facebook开发的应用程序并允许访问我的链接。现在,如果应用程序试图访问我在Facebook上喜欢的链接,那么应用程序将无法获取GHI(我喜欢)发布的链接,除非GHI已将其与Friends的链接设置为可见。

如果有人需要更多的帮助,然后再回到这个论坛。

问候, 哈龙

+0

感谢您的提示,将尝试一下... – dickyj 2011-03-16 14:11:06

+0

haroon,用户需要登录的应用程序才能得到相似的数量?我的意思是oauth是必需的? – vks 2013-06-24 13:30:23

1
# fql query 
    $fql = "SELECT like_info FROM photo WHERE object_id=" . $photo_id; 

    # api request 
    $request = array(
    'method' => 'fql.query', 'query' => $fql 
    ); 

    # run batch request 
    $likeInfo = $facebook->api(array(
    'method' => 'fql.query', 'query' => $fql 
)); 

    var_dump($likeInfo);die; 
=> get like info of photo`enter code here` 
0

这些天,如果你知道你要查询什么类型后,您可以使用FQL。例如,如果你想知道喜欢有多少相片,您可以使用:

SELECT like_info FROM photo WHERE object_id = 414122065292107 

哪个返回如下:

{ 
    "data": [ 
    { 
     "like_info": { 
     "can_like": true, 
     "like_count": 1354, 
     "user_likes": false 
     } 
    } 
    ] 
} 

类似的方法对不同类型的内容存在,但它似乎不一致对我来说,看看FQL文档。

https://developers.facebook.com/docs/reference/fql/

1

显然,答案已经改变了很多,因为你首先问的问题,但这里的答案,因为今天的。使用Facebook的图形API,以找出如何获取有关相簿的照片来自Facebook的信息:

https://graph.facebook.com/albumID/photos?fields=id,likes.summary(true),comments.summary(true)&after=XXXXXX&access_token=XXXXXX 

使用AJAX来发送GET请求:

$.ajax({ 
    dataType: "json", 
    method: "GET", 
    url: "https://graph.facebook.com/" + albumID + "/photos", 
    data: {fields: "id,likes.summary(true),comments.summary(true)", 
     limit: 100, 
     after: afterStr, 
     access_token: token}) 

变量“afterStr”是下一页数据的ID。

然后将下面的计算我们从Facebook得到的喜好和意见:

var dArr = msg.data; 
var i = 0; 
for (i = 0; i < dArr.length; i++) { 
    like += dArr[i].likes.summary.total_count; 
    comment += dArr[i].comments.summary.total_count; 
} 

后使用ID的结果到您的HTML:

$("#likeID").html(like); 
$("#commentID").html(comment); 

工作demo here

希望这会有所帮助!