ben
ben

Reputation: 29797

Why do I get this error when I try to access a certain type of object via the Facebook Graph API?

I have a user, user_2. There is a post on their wall, made by user_1.

enter image description here

The URL is

https://www.facebook.com/user_1/posts/10150166228506188

I try to get the content using the Graph API, with this request:

https://graph.facebook.com/10150166228506188?access_token=ACCESSTOKENUSER_2

I get this error:

{
   "error": {
      "type": "GraphMethodException",
      "message": "Unsupported get request."
   }
}

The access_token I am using is good, because requests to get things like statuses & images work fine:

https://graph.facebook.com/10150233707783933?access_token=ACCESSTOKENUSER_2

Result:

{
   "id": "10150233707783933",
   "from": {
      "name": "American Steel",
      "category": "Professional sports team",
      "id": "203692078932"
   },
   "tags": {
      "data": [
etc

The error seems to happen whenever I try to get items that have this kind of URL:

https://www.facebook.com/username/posts/item_id

The permissions my app has include these: enter image description here

Why is this error occurring?

Upvotes: 3

Views: 2538

Answers (2)

Jim Rubenstein
Jim Rubenstein

Reputation: 6930

You're accessing the end-point of the post incorrectly. Every object on Facebook has a unique ID. Right now, it just so happens that they form it by appending different IDs together (your post is an example, <user_id>_<post_id>, and for a comment on that post it'd be <user_id>_<post_id>_<comment_id>). Facebook hasn't made public acknowledgment of this (not that they really have to, it's obvious) which makes me leary to rely on that paradigm for accessing data within the graph. This is because Facebook could change it at any point, and the fact that they haven't said "yeah append these 2 ids together and you can get something meaningful from this part of the graph" means they won't have to notify anyone about the change, you could just wake up one day and your app be completely broken and you'd have to find a work around quickly and while suffering down time.

The graph api works by accessing objects on Facebook by making a request to the API for that unique ID. So, you don't need to access (and can't access) your posts by going to graph.facebook.com/<user_id>/posts/<post_id>. Instead, you go to graph.facebook.com/<post_id>. You get the post_id from the /<user_id>/home or /<user_id>/feed end-point on the graph. There is no need to modify a post_id in order to fetch information about it from the graph.

Hope that helps

Upvotes: 2

dwarfy
dwarfy

Reputation: 3076

I think that, in order to access the posts directly through the graph api, you have to prepend the user id to the post id you see in the facebook url.

So in your example the facebook post url is :

https://www.facebook.com/user_1/posts/10150166228506188

And you try to get through the graph api :

https://graph.facebook.com/10150166228506188?access_token=ACCESSTOKENUSER_2

BUT you should be doing :

https://graph.facebook.com/{id of user_1}_10150166228506188?access_token=ACCESSTOKENUSER_2

I noticed that all posts ids are formed like this by visiting :

https://graph.facebook.com/me/posts?access_token=...

Does this solve your problem ?

Upvotes: 4

Related Questions