我正在编写一个程序来获取我墙上的所有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。这会给出在帖子上喜欢的用户数量,但不会向我提供有关喜欢我的帖子的用户的信息。请帮忙。
答案 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)