我正试图通过FQL获得所有用户的喜欢。以下是我的研究,包括我尝试过的以及每次尝试的问题。
1)最简单的方法是查询uid上的表。所以这会在其他人的流上返回57(对我而言)。
SELECT object_id, post_id, user_id
FROM like
WHERE user_id = me()
XML看起来像这样(注意无法解释的post_id缺席)
<like>
<object_id>10150695050005313</object_id>
<post_id></post_id>
<user_id>xxxxxxxxxxx</user_id>
</like>
上述似乎是合乎逻辑的步骤,但Facebook doesn't index the user_id field因此我无法使用以下代码获取更多详细信息。此代码不起作用。
SELECT post_id, message
FROM stream
WHERE post_id IN (
SELECT object_id, post_id, user_id
FROM like
WHERE user_id = me()
)
2)使用Graph API:/ me / likes /检索95个粉丝页面上的信息,但不是来自照片,视频,链接或离线内容的信息。完整网址为:https://graph.facebook.com/me/likes?access_token=
例如:
{
"data": [
{
"name": "BStU",
"category": "Organization",
"id": "136978696319967",
"created_time": "2011-06-29T12:09:17+0000"
},
{
"name": "Euchre",
"category": "Interest",
"id": "112355915446795",
"created_time": "2011-06-29T12:06:07+0000"
},
3)此FQL返回与上面的代码相同的95个粉丝页面:
SELECT page_id,name
FROM page
WHERE page_id IN (
SELECT page_id
FROM page_fan
WHERE uid=me()
)
总而言之,理想情况下,无论对象如何,我都能够为用户返回所有相似内容。我愿意继续使用粉丝页面和流媒体文章,如果我可以通过一个FQL查询返回所有内容以及数据。
有什么建议吗?我将补充一点,我试图在不使用REST API的情况下这样做,因为它会降级(有一天?)因此使用fql.multiquery不是一种选择。
答案 0 :(得分:2)
我已经能够使用FQL来获取流中的一些,但不是全部。请参阅:http://facebook.stackoverflow.com/questions/8496980/fql-like-table-not-returning-any-results
我得到的查询是:
1)为我提供了我喜欢的网页Feed项目:
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
2)从我自己发布的Feed中为我提供了我喜欢的精选项目:
SELECT post_id, source_id, message
FROM stream
WHERE source_id=me()
AND likes.user_likes=1
LIMIT 10
令我讨厌的是,我无法从事件流项目,朋友流项目,组流项目等的流项目中获取用户喜欢。即使我已为该用户接受了所有权限。这不像我要求提供秘密信息。当然,用户可以通过我的应用程序喜欢和删除流项目的喜欢。只是我无法查询用户喜欢的当前流项目的完整列表。
答案 1 :(得分:1)
抱歉,您无法使用/likes
端点获取所有人的喜欢。我们将它限制为任何具有FB页面的东西,这是任何打开的图形对象,没有文章。例如,如果您喜欢og:type
article
的开放图表对象,我们不会在图表api likes
端点中返回该对象。
答案 2 :(得分:0)
尝试此FQL查询:
SELECT user_id, object_id, post_id, object_type
FROM like
WHERE user_id = me()