如何在墙上的帖子中获得用户的喜欢和评论?

时间:2014-03-28 03:12:04

标签: javascript facebook facebook-graph-api facebook-javascript-sdk facebook-fql

我正在编写一个程序来获取我墙上的所有Facebook帖子。从这些帖子中我想得到所有喜欢或评论特定帖子的用户的名字。我可以使用/me?fields=posts使用<html> <head></head> <body> <div id="fb-root"></div> <script> window.fbAsyncInit = function() { FB.init({ appId : 'XXXXXXXXXXXXXX', status : true, // check login status cookie : true, // enable cookies to allow the server to access the session xfbml : true // parse XFBML }); FB.getLoginStatus(function(response){ if (response.status === 'connected') { console.log(response.authResponse.accessToken); testAPI(); } else { FB.login(); } },{scope:'email,user_likes,read_stream,user_status,status_update,share_item,video_upload,user_friends,create_node,photo_upload,publish_stream,publish_actions,export_stream,publish_checkins,share_item,video_upload'}); }; // Load the SDK asynchronously (function(d){ var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; if (d.getElementById(id)) {return;} js = d.createElement('script'); js.id = id; js.async = true; js.src = "//connect.facebook.net/en_US/all.js"; ref.parentNode.insertBefore(js, ref); }(document)); function testAPI() { console.log('Welcome! Fetching your information.... '); FB.api("/me?fields=posts", function(response) { if (response && !response.error) { console.log(response); } else { console.log("Something's wrong"); } }); } </script> <fb:login-button show-faces="true" size="xlarge" width="200" max-rows="1"></fb:login-button> </body> </html> 查询来获取此内容(但是,它只给了我25个喜欢我帖子的人的名字)。但是,当我使用代码执行此操作时,它会为我提供我喜欢的页面和我喜欢的专辑,而不是我的墙贴。我已经添加了所需的所有权限。

以下是代码:

SELECT post_id, likes, actor_id, target_id, message,comments FROM stream WHERE source_id = me()

我也尝试过使用查询{{1}}使用FQL。这会给出在帖子上喜欢的用户数量,但不会向我提供有关喜欢我的帖子的用户的信息。请帮忙。

2 个答案:

答案 0 :(得分:1)

请查看以下链接: -

How to get picture of user who has commented on my facebook post?

POST_ID?fields=likes.fields(pic_square,name),comments

这可能对您有所帮助。

答案 1 :(得分:1)

如果您只想更新状态,可以使用

GET /me/statuses 

端点。如果您希望对帖子进行更多过滤,请参阅流FQL表的type字段:https://developers.facebook.com/docs/reference/fql/stream/#columns您可以在FQL的IN列表中使用这些。

您可以获得喜欢您的帖子的用户的信息:

GET /me/statuses?fields=id,message,likes.fields(id,name,pic_square).limit(100),comments.fields(from.fields(id,name,pic_square)).limit(100)&limit=100

如果您添加likes.fields(id,name,pic_square),其中字段列表可以是用户的任何字段。遗憾的是,这与评论的工作方式不同,请参阅上述查询的输出。您可以为包含数组的每个字段添加限制,以接收大量结果。

对于评论,我猜你只有手动抓取它们的选项和#34;加入&#34;它们通过user_id来自Graph API的结果(来自Graph API查询的id等于来自FQL查询的uid)。

select uid, name, pic_square from user where uid in (SELECT comments.comment_list.fromid FROM stream WHERE source_id = me() and type in (46, 80, 128, 247) limit 100)