我需要帮助获得stream items via FQL的用户喜欢。我有一些喜欢回来,但无法弄清楚如何获得其他人。对于access_token,每permission is granted。
让我告诉你我能做些什么:
我喜欢 Page Feed的帖子:
fql?q=Select post_id, source_id, message FROM stream where source_id in (SELECT target_id FROM connection WHERE source_id=me() and is_following=1) AND likes.user_likes=1 LIMIT 10
注意:这是在2011年12月中旬发布原始问题时的工作原理。现在(2012年2月中旬),它不再返回页面中任何喜欢的流内容。
发帖我喜欢我发布的帖子:
fql?q=Select post_id, source_id, message FROM stream where source_id=me() AND likes.user_likes=1 LIMIT 10
这是我缺少的
在朋友的墙上发布我喜欢的帖子:
fql?q=Select post_id, source_id, message FROM stream where source_id in (SELECT uid1 FROM friend WHERE uid2=me()) AND likes.user_likes=1 & LIMIT 5000
在活动的墙上发布我喜欢的帖子:
????
在群组的墙上我喜欢的帖子:
????
答案 0 :(得分:2)
截至发布时间(2012年10月22日),这是我的想法:
对于朋友/订阅/页面项目:
SELECT likes, post_id, actor_id, target_id, message
FROM stream
WHERE source_id IN (SELECT target_id FROM connection WHERE source_id=me())
AND likes.user_likes=1
OR
来自'like'表:
SELECT user_id, object_id, post_id
FROM like
WHERE user_id=me()
但post_id
始终为空,并且有时在通过图表API查询时不存在object_id
(即graph.facebook.com/OBJECT_ID
)
对于链接/外部对象 - 没有直接的方法从这里获取Facebook帖子的详细信息,但它返回了很多结果。也许使用另一个查询/多查询在流或链接表中查找这些网址。
SELECT url
FROM url_like
WHERE user_id=me()
答案 1 :(得分:1)
我找到了使用Open Graph API的解决方案。希望这对你也有帮助吗?
要执行此操作,您需要用户read_stream权限。
如果我的解决方案符合您的要求,请告诉我。
因为FQL不会比V2.0更长,所以我更喜欢使用Open Graph API而不是FQL。
/*
*
* Count my_user_id likes in wall of user "123"
*
* ex: url = /123/posts
*
* setTimeout to avoid exceed api level rate limit, code 613
*/
function findMyLikes(url,my_user_id,count,callback) {
console.log(url);
FB.api(url, function (response) {
if (response.data) {
response.data.forEach(function (post) {
//console.log(post);
if (post.likes) {
post.likes.data.forEach(function (like) {
if (like.id == my_user_id) {
count++;
}
});
}
});
}
if (response.paging && response.paging.next) {
setTimeout(function() {findMyLikes(response.paging.next,my_user_id,count,callback)},1000);
} else {
callback(count);
}
});
};
我注意到,如果您要分析非常长的Feed,此解决方案可能需要一些时间。 对于这个问题,我还有一个悬而未决的问题:通过较少的图形API调用获取新闻墙上特定用户的所有喜欢 https://codereview.stackexchange.com/q/58270/50013?sem=2
答案 2 :(得分:0)
@Jeff Sherlock说here '你不能使用fb平台吸引所有人的喜欢。出于隐私原因,我们将其限制为演员,电影,运动队等。'我知道它没有多大意义,因为您可以使用Facebook API查询各种其他内容。我建议你拍照阿什顿库彻并尝试查询他喜欢的桌子......等等,你需要他的许可; ]
答案 3 :(得分:0)
问题是,like表为所有内容返回一个空白的post_id。但是,它会为您的喜欢返回object_id。
您可以将所有这些object_id放在逗号分隔的字符串中,然后使用?ids = objectid1,objectid2,objectid3等提交图形API调用。
然后返回它找到的所有对象。通过这种方式,您可以获得流项目的喜欢。
似乎大约需要4个星期。我似乎无法让它比这更进一步。
顺便说一句,你会发现有一件事是喜欢的评论也会在同一个表中作为object_ids返回。但是,似乎没有任何方法可以找出这些object_ids的对象详细信息。这些有点神秘。
答案 4 :(得分:0)
如果您阅读like表格文档,则post_id
字段会显示一条注释:
必须从流FQL表中查询这些帖子ID。
因此,当您将post_id
与post_id<>""
进行比较时,它不会返回任何内容,因为默认结果包含空白的post_id。当你运行以下查询时似乎:
SELECT user_id, object_id, post_id
FROM like
WHERE user_id=me()
它会返回用户喜欢的页面以及其他一些内容,但不会返回Feed帖子。
由于您已经希望从流表中获得喜欢,您只想从流表中获取post_id
。要获取某一天的post_id
NewsFeed,您可能需要尝试以下查询。
SELECT post_id
FROM stream
WHERE filter_key IN (
SELECT filter_key
FROM stream_filter
WHERE uid=me()
AND type='newsfeed'
)
AND is_hidden = 0
AND description<>''
您可能希望使用Limit
和Created_time
字段获取更多编号。的帖子。一旦你在Multi-query中使用上面的查询来获得用户的喜欢,你肯定会在某一天得到喜欢。
答案 5 :(得分:-1)
SELECT post_id, actor_id, message, type, permalink, attachment, likes,
comments, description, updated_time, created_time
FROM stream
WHERE filter_key in (
SELECT filter_key
FROM stream_filter
WHERE uid=me() AND type='newsfeed'
)
只需根据您的要求更改类型
答案 6 :(得分:-2)
GraphAPI
无法做到这一点。 GraphAPI
将允许您查看用户使用/me/likes
所喜欢的网页,但它不会为您提供他们喜欢的发布到用户墙上的所有项目的列表。
我对您的问题中列出的FQL
没有经验,但Stack Overflow问题似乎可以解答您的问题。
请参阅:Facebook API - "All my likes" query
完美地完成了测试。