Facebook Graph API - delete like
I'm developing an app for Facebook in PHP, part of which lists the user's "likes". I would like to add a link next to each like so that the user can manage their likes by deleting them where they see fit.
Facebook mentions this in their graph api docs:
You can delete a like by 开发者_如何学运维issuing a DELETE request to /POST_ID/likes (since likes don't have an ID).
But each like must have an id - how else would you delete it?
Has anyone done this before?
Yes, likes don't have an ID in the Graph API. You like or unlike an item by POSTing or DELETEing to {item_id}/likes
, where {item_id}
is replaced by the ID of the object you're liking/unliking.
To find out what the current user has liked (so you can delete them appropriately), you can use the "likes" connection of the User object (docs). So, if you request http://graph.facebook.com/me/likes
, you'll get a list of pages/people/whatever that a user has liked. (Note: this does not include posts or photos or things like that)
This will return an array of data full of items like this:
{
"name": "Very Hungry Caterpillar",
"category": "Artist",
"id": "29956247793",
"created_time": "2009-03-27T15:48:29+0000"
}
The ID in there is not the ID of the like. It is the ID of the object that the user has liked, so in order to un-like it, you have to make a DELETE to http://graph.facebook.com/29956247793/likes
.
It's not the 'like' that has an ID, it's the post - which is why the api call uses '/POST_ID/likes' as a target - if you delete '/POST_ID', it'll get rid of the post, but if you delete '/POST_ID/likes' it'll get rid of the user's 'like' for that post.
Likes do have an ID.
If you look at https://graph.facebook.com/me/likes, you will see that the resulting data does contain an ID value for each.
{
"data": [
{
"name": "Audi",
"category": "Consumer_products",
"id": "96585976469",
"created_time": "2010-09-27T15:30:15+0000"
}
]
}
You might want to try the ID's there, I've noticed that the FB API doc sometimes has errors.
Edit: I think this also may be a terminology issue, as what the doc says doesn't have ID's is probably likes to a user post, and these probably don't really have an ID and can be removed by issuing a delete to the POST_ID/likes. Then there's the likes generated by liking pages and/or external websites via the like-button, and these DO have an ID. Confusing, it is.
With OpenGrpah, likes do have ids, it is the single id field in the object returned by an API call to og.likes.
You unlike using access_token
which used to make this like.
Pseudocode:
to like:
FacebookGraphApi::getInstance()->setAccessToken('xxx')->post('xxxxxx/likes')
to unlike:
FacebookGraphApi::getInstance()->setAccessToken('xxx')->delete('xxxxx/likes')
精彩评论