I am using the graph-api to walk information about a facebook user. In looking at the connections for the User node, both 'posts' and 'statuses' are available.
When walking through the posts, I come across posts of the type 'status' that have slightly different information, than the equivalent status message.
In the example below, you can see that they are the same message, but the "Post Version" has an id of "100002912416196_212493188857760" while the "Status Version" has an id of "212493188857760". Is one "more correct" than the other? Is Facebook in the process of moving from using statuses (and links, etc) to just using posts (or vice versa)? Any help someone could give would be appreciated.
Here's an example (edited to save space)
when called with https://graph.facebook.com/me/posts
"data": [
{
"id": "100002912416196_212493188857760",
"from": {
"name": "Ben Backup",
"id": "100002912416196" },
"to": {
"data": [{
"name": "Dave Upify",
"id": "100001917301370"
}] },
"message": "With Dave Upify",
...
"type": "status",
"created_time": "2012-03-20T20:18:54+0000",
"updated_time": "2012-03-20T20:18:54+0000",
"comments": {
"count": 0
},
"is_published": true
}
when called with https://graph.facebook.com/me/statuses
"data": [{
"id": "212493188857760",
"from": {
"name": "Ben Backup",
"id": "100002912416196" },
"message": "With Dave Upify",
"place": {
"id": "126533127390327",
"name": "Massachusetts Institute of Technology",
"location": {
"street": "77 Massachusetts Avenue",
"city": "Cambridge",
"state": "MA",
"country": "United States",
"zip": "02139",
"latitude": 42.359430693405,
"longitude": -71.092129185382
}
},
"updated_time": "2012-03-20T20:18:52+0000"
},
Related
I'm working with the Facebook Graph API and I was wondering which fields are available for the &fields parameter and also where do I find any documentation about those fields.
I could only find the Search types for the &type parameter in the documentation for example the page Search type let's you search for a page if you provide a name to be queried.
Example request
search?q=Facebook&type=page
Example response
{
"data": [
{
"category": "Computers/technology",
"name": "Facebook Engineering",
"id": "9445547199"
},
{
"category": "Product/service",
"name": "Facebook",
"id": "103274306376166"
},
{
"category": "Product/service",
"name": "Facebook Developers",
"id": "19292868552"
},
{
"category": "Media/news/publishing",
"name": "Facebook Stories",
"id": "114770288670819"
}
]
}
If I now need some specified fields from this collection I know from a previous experience that I could use the &fields parameter to extract them or filter them out.
Example request
search?q=Facebook&type=page&fields=name, likes, location
Example response
{
"data": [
{
"name": "Facebook NY",
"likes": 71564,
"location": {
"street": "770 Broadway",
"city": "New York",
"state": "NY",
"country": "United States",
"zip": "10003",
"latitude": 40.730901749524,
"longitude": -73.991377364328
},
"id": "28864583650"
},
{
"name": "Facebook London",
"likes": 56441,
"location": {
"street": "10 Brock Street",
"city": "London",
"state": "",
"country": "United Kingdom",
"zip": "NW1 3FG",
"latitude": 51.5258476,
"longitude": -0.1394228
},
"id": "265781023507354"
},
{
"name": "Facebook Paris",
"likes": 29740,
"location": {
"street": "",
"city": "Paris",
"state": "",
"country": "France",
"zip": "75017",
"latitude": 48.883443087419,
"longitude": 2.3023060392957
},
"id": "147424071942327"
}
]
}
I used the Graph API Explorer to do this
TLDR; is there a list or documentation available for all the options/specific fields in the &fields parameter?
Although there is no complete documentation, for any element you can query
{id}?metadata=1
this will give you a full list of fields and edges that are available for that object type (as well as its type at the very bottom)
sample call: https://graph.facebook.com/v2.8/me?metadata=1
There is no exact documentation on the search fields endpoint.
An educated guess would be that based on the type you can inspect the fields of that page.
Example, for type=page the fields available will be listed at https://developers.facebook.com/docs/graph-api/reference/v2.2/page
{
"id": "11882030_4952296803730",
"from": {
"name": "xxx",
"id": "11882030"
},
"message": "test",
"picture": "https://fbcdn-photos-a.akamaihd.net/hphotos-ak-ash4/408410_4952294483672_298434229_s.jpg",
"link": "https://www.facebook.com/photo.php?fbid=4952294483672&set=pcb.4952296803730&type=1&relevant_count=2",
"icon": "https://fbstatic-a.akamaihd.net/rsrc.php/v2/yx/r/og8V99JVf8G.gif",
"actions": [
{
"name": "Comment",
"link": "https://www.facebook.com/11882030/posts/4952296803730"
},
{
"name": "Like",
"link": "https://www.facebook.com/11882030/posts/4952296803730"
}
],
"privacy": {
"description": "Friends",
"value": "ALL_FRIENDS",
"friends": "",
"networks": "",
"allow": "",
"deny": ""
},
"place": {
"id": "471607792876974",
"name": "TTT",
"location": {
"street": "",
"zip": "",
"latitude": x,
"longitude": x
}
},
"type": "photo",
"status_type": "mobile_status_update",
"object_id": "4952294483672",
"application": {
"name": "Facebook for iPhone",
"namespace": "fbiphone",
"id": "6628568379"
},
"created_time": "2013-01-17T01:29:59+0000",
"updated_time": "2013-01-17T01:29:59+0000",
"comments": {
"count": 0
}
}
As above, I posted a status with two photos. I can get the first photo's thumb URL in picture and the relevant link & count information in link.
But how can I get each photo's specific URL?
FQL often provides more information than Graph API. You have to use the attachment parameter of the stream FQL table to get all the attached photos.
SELECT attachment FROM stream
WHERE source_id = me()
AND post_id="11882030_4952296803730"
Result:
{
"data": [
{
"attachment": {
"media": [
{
"href": "https://www.facebook.com/photo.php?fbid=471082296...",
"alt": "",
"type": "photo",
"src": "https://fbcdn-photos-a.akamaihd.net/hphotos-ak-ash3/5826...",
"photo": {
"aid": "4391039135",
"pid": "439104482145",
"fbid": 471507,
"owner": 102832,
"index": 1,
"width": 485,
"height": 172,
"images": [
{
"src": "https://fbcdn-photos-a.akamaihd.net/hph...",
"width": 130,
"height": 46
}
]
}
}
],
"name": "",
"caption": "",
"description": "",
"properties": [
],
"icon": "https://fbstatic-a.akamaihd.net/rsrc.phpjk.gif",
"fb_object_type": "album",
"fb_object_id": "4391044992857139135"
},
{
... //Photo 2
}
}
]
}
Based on Stéphane Bruckerts answer; you're after attachments. So I'd recommend simply requesting the attachments field in your graph request.
Although this question is a few years old, it still comes up when searching for this topic.
Facebook (Meta) Graph API has changed. Current Facebook (Meta) Graph API is version 13.0.
The best endpoint I found was to use the "/feed" URI slug, with "fields=attachments". Simply cURL / GET:
https://graph.facebook.com/v13.0/$PAGEID/feed?access_token=$AUTHTOKEN&fields=attachments,full_picture,id,message,story
Reference: https://developers.facebook.com/docs/graph-api/reference/v13.0/page/feed
when getting my feed with /me/feed it seems that the first comment on posts of other users on my wall is represented another time in the feed as an independent status entry (also has a different id) itself.
It looks like the following JSON output. The first entry of the list is apparently generated from the first comment of the second entry of the list.
I could not reproduce the problem, another post on my wall I commented on turned out normal (= no duplicate entry for first comment)
Is this a bug in Facebook itself or can someone explain this behavior?
[
{
"id": "someID_4300357461829",
"from": {
"name": "user1",
"id": "someID"
},
"story": "\"na oida\" on user2's post on your wall.",
"story_tags": {
"13": [
{
"id": "someID2",
"name": "user2",
"offset": 13,
"length": 15,
"type": "user"
}
]
},
"type": "status",
"created_time": "2012-11-03T01:41:15+0000",
"updated_time": "2012-11-03T01:41:15+0000",
"comments": {
"count": 0
}
},
{
"id": "someID_4300356661809",
"from": {
"name": "user2",
"id": "someID2"
},
"to": {
"data": [
{
"name": "user1",
"id": "someID"
}
]
},
"message": "hi!",
"actions": [
{
"name": "Comment",
"link": "https://www.facebook.com/someID/posts/4300356661809"
},
{
"name": "Like",
"link": "https://www.facebook.com/someID/posts/4300356661809"
}
],
"type": "status",
"created_time": "2012-11-03T01:40:54+0000",
"updated_time": "2012-11-03T01:45:21+0000",
"comments": {
"data": [
{
"id": "someID_4300356661809_4479943",
"from": {
"name": "user1",
"id": "someID"
},
"message": "na oida",
"created_time": "2012-11-03T01:41:15+0000"
},
{
"id": "someID_4300356661809_4479949",
"from": {
"name": "user1",
"id": "someID"
},
"message": "interesting",
"created_time": "2012-11-03T01:42:31+0000"
},
{
"id": "someID_4300356661809_4479956",
"from": {
"name": "user1",
"id": "someID"
},
"message": "another one",
"created_time": "2012-11-03T01:44:40+0000"
},
{
"id": "someID_4300356661809_4479959",
"from": {
"name": "user2",
"id": "someID3"
},
"message": "spam",
"created_time": "2012-11-03T01:45:21+0000"
}
],
"count": 4
}
}
]
I had this same issue. I've submitted a bug to facebook. Vote it up - https://developers.facebook.com/bugs/483624361705934
Just in case you haven't realised, those "wrong" posts doesn't have any action in it, so you can filter the right posts just checking if actions exist.
For research purposes I need to get all wall posts of the European Commission's Facebook page. I tried it trough this link, but I couldn't get access: http://graph.facebook.com/EuropeanCommission/posts
Is there any chance I can get a list of all posts ever published by the Commission? Or do I need to hand-copy-and-paste them from the timeline? Comments are not needed.
I just tried in the API Explorer tool and I got the list of posts with pagination links too:
http://developers.facebook.com/tools/explorer?method=GET&path=EuropeanCommission%2Fposts
{
"data": [
{
"id": "107898832590939_396059463745799",
"from": {
"name": "European Commission",
"category": "Government organization",
"id": "107898832590939"
},
"picture": "http://photos-f.ak.fbcdn.net/hphotos-ak-prn1/523856_348222705225216_107898832590939_963377_101027267_s.jpg",
"link": "http://www.facebook.com/notes/european-commission/news-update-2-4-march-2012-by-elections-myanmar-conviasa-added-to-eu-blacklist-v/396059463745799",
"name": "News update 2-4 March 2012: By-elections Myanmar, Conviasa added to EU blacklist, vehicle registration easier and more.",
"description": "\nMonday 2 April: Catherine Ashton congratulates the Government and people of Myanmar on the conduct of the by-elections\n \n\nMyanmar – Pagodas in Bagan\n \n...",
"icon": "http://static.ak.fbcdn.net/rsrc.php/v1/yY/r/1gBp2bDGEuh.gif",
"actions": [
{
"name": "Comment",
"link": "http://www.facebook.com/107898832590939/posts/396059463745799"
},
{
"name": "Like",
"link": "http://www.facebook.com/107898832590939/posts/396059463745799"
}
],
"type": "link",
"application": {
"name": "Notes",
"id": "2347471856"
},
"created_time": "2012-04-04T13:06:58+0000",
"updated_time": "2012-04-05T07:54:16+0000",
"likes": {
"data": [
{
"name": "EU Law and Publications",
"category": "Media/news/publishing",
"id": "218434258171162"
}
],
"count": 1
},
"comments": {
"data": [
{
"id": "107898832590939_396059463745799_5180327",
"from": {
"name": "Ivan Burrows",
"id": "1119361344"
},
"message": "# The European Parliament\n\nWhen do we get ours?\n\nIt seems you have finally managed to get an increase in something.\n\n40\u0025 increase in suicides in Greece.\n\nTheir blood is on your hands.\n\nhttp://www.bbc.co.uk/news/world-europe-17621131",
"created_time": "2012-04-05T07:54:16+0000"
}
],
"count": 1
}
},
{
"id": "107898832590939_424622557555230",
"from": {
"name": "European Commission",
"category": "Government organization",
"id": "107898832590939"
},
"message": "Marie Therese Vella gets a fresh start thanks to ESF-funded training for people over 40. Have a look at how she did it. Are you planning a career change? Are you currently unemployed? Are you aware of the channels available to you to get help? http://bit.ly/HVaLXZ",
"picture": "http://external.ak.fbcdn.net/safe_image.php?d=AQBVJqYwG1_uazFM&w=90&h=90&url=http\u00253A\u00252F\u00252Fec.europa.eu\u00252Fesf\u00252FBlobServlet\u00253Fmode\u00253DvideoPhoto\u002526videoId\u00253D2491\u002526cnt\u00253D313333967",
"link": "http://bit.ly/HVaLXZ",
"name": "Funding - Getting a fresh start",
"caption": "ec.europa.eu",
"icon": "http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/aS8ecmYRys0.gif",
"actions": [
{
"name": "Comment",
"link": "http://www.facebook.com/107898832590939/posts/424622557555230"
},
{
"name": "Like",
"link": "http://www.facebook.com/107898832590939/posts/424622557555230"
}
],
"type": "link",
"created_time": "2012-04-04T11:32:32+0000",
"updated_time": "2012-04-04T12:24:45+0000",
"shares": {
"count": 11
},
"likes": {
"data": [
{
"name": "Stefanija Stoimenovska",
"id": "100000025178728"
}
],
"count": 28
},
"comments": {
"data": [
{
"id": "107898832590939_424622557555230_5762457",
"from": {
"name": "Ehtesham Mallick",
"id": "100001067328472"
},
"message": "I wish some training in Laws especially from European countries and prefer training and distance learning about Human rights under the chartered of UNO",
"created_time": "2012-04-04T12:24:45+0000"
}
],
"count": 1
}
}
],
"paging": {
"previous": "https://graph.facebook.com/EuropeanCommission/posts?limit=2&format=json&since=1333544818&__previous=1",
"next": "https://graph.facebook.com/EuropeanCommission/posts?limit=2&format=json&until=1333539151"
}
}
In the facebook Graph API. the actual message of the object appears as "message": or "story":
Example:
{
"id": "148550335191249_236850319694583",
"from": {
"name": "Sinners Highway",
"category": "Musician/band",
"id": "148550335191249"
},
"story": "Sinners Highway edited their Biography and Band Interests.",
"story_tags": {
"0": [
{
"id": 148550335191249,
"name": "Sinners Highway",
"offset": 0,
"length": 15
}
]
},
"type": "status",
"created_time": "2011-09-02T21:49:50+0000",
"updated_time": "2011-09-02T21:49:50+0000",
"comments": {
"count": 0
}
},
and this one:
{
"id": "148550335191249_258570210855927",
"from": {
"name": "Sinners Highway",
"category": "Musician/band",
"id": "148550335191249"
},
"message": "LETS GET ROCKIN'! ",
"picture": "http://platform.ak.fbcdn.net/www/app_full_proxy.php?app=123966167614127&v=1&size=z&cksum=81c39517d99ba86af6a77df2c4879810&src=http\u00253A\u00252F\u00252Fstatic.bandsintown.com\u00252Fimages\u00252Ffacebook\u00252Fpromote\u00252Fnew-date.png",
"link": "http://bnds.in/q0cSbN",
"name": "Sinners Highway \u0040 The Grange in Nottingham, United Kingdom",
"caption": "Sunday, November 27, 2011 at 6:00pm",
"properties": [
{
"name": "Tickets",
"text": "http://bnds.in/nqft0W",
"href": "http://bnds.in/nqft0W"
},
{
"name": "More Tour Dates",
"text": "http://bnds.in/oZ6VTg",
"href": "http://bnds.in/oZ6VTg"
}
],
"type": "link",
"application": {
"name": "Bandsintown",
"canvas_name": "concertsbybit",
"namespace": "concertsbybit",
"id": "123966167614127"
},
"created_time": "2011-10-21T17:44:12+0000",
"updated_time": "2011-10-21T20:01:31+0000",
},
From what I can tell its completely random whether it is a message or a story.
Does anybody know where and when the story attribute is used and why?
Well from those two examples, the noticeable difference is that the story was an activity that was auto-posted about something the band did on facebook (editing their profile), whereas the message was something that someone has posted on the page wall.