I'm trying to get ALL of a user's likes with FQL. Following is my research including what I've tried and the problems with each attempt.
1) The most simple method would be to query the table on the uid. So this returns 57 (for me) likes on other's stream.
SELECT object_id, post_id, user_id
FROM like
WHERE user_id = me()
XML looks like this (note unexplained absence of post_id)
<like>
<object_id>10150695050005313</object_id>
<post_id></post_id>
<user_id>xxxxxxxxxxx</user_id>
</like>
The above seems like a logical step, but Facebook doesn't index the user_id field so I can't use the following code to get further details. This code does not work.
SELECT post_id, message
FROM stream
WHERE post_id IN (
SELECT object_id, post_id, user_id
FROM like
WHERE user_id = me()
)
2) Using the Graph API: /me/likes/ retrieves information on 95 fan pages, but not from photos, videos, links, or offline content. The full url is: https://graph.facebook.com/me/likes?access_token=
For example:
{
"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) This FQL returns the same as the above code, 95 fan pages:
SELECT page_id,name
FROM page
WHERE page_id IN (
SELECT page_id
FROM page_fan
WHERE uid=me()
)
So to summarize, ideally I would be able to return every like for a user, regardless of the object. I'm willing to move forward with a mixture of fan pages and stream posts though, if I can return them all, along with the data, with one FQL query.
Any suggestions? I will add that I'm trying to do this without using the REST API because it is going to be degraded (someday?) so therefore using fql.multiquery is not an option.
I've been able to use FQL to get at some, but not all, of the stream likes. See: http://facebook.stackoverflow.com/questions/8496980/fql-like-table-not-returning-any-results
The queries I've got are:
1) Gives me stream items I've liked on page feeds:
2) Gives me stream items I've liked from my feed that I myself posted:
What's annoying is I cannot get user likes from stream items for Event stream items, Friend stream item, Group stream items, etc. Even though I have every permissions accepted for that user. It's not like I'm asking for secret information. As a matter of course, the user can like and remove likes of stream items via my app. It's just that I cannot query a complete list of the current stream items that have been liked by the user.
Try this FQL query:
Sorry, you cannot pull all of the likes of a person using the
/likes
endpoint. We limit it to anything that has a FB page, which is any open graph object, sans articles. For example, if you like an open graph object that has anog:type
ofarticle
, we don't return that in the graph apilikes
endpoint.