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:
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) Gives me stream items I've liked from my feed that I myself posted:
SELECT post_id, source_id, message
FROM stream
WHERE source_id=me()
AND likes.user_likes=1
LIMIT 10
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.
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 an og:type
of article
, we don't return that in the graph api likes
endpoint.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With