Search code examples
facebookfacebook-graph-apifacebook-fql

Facebook Graph Api - Retrieve only Wall posts that contain a photo


I need to retrieve wall posts from Facebook for a given account, but I'm only interested in posts that contain a photo. Is there a way to add such a filter to a Facebook graph api query? Something like:

https://graph.facebook.com/DigitasLBiNL?fields=feed&type=photo

The facebook data contains a type property which comes back as photo, so I would think this would be possible, but I haven't had any luck going through the facebook sdk documentation or tinkering around.

I know I could do the filtering myself, but I'd prefer to be able to keep the paging property that facebook returns.


Solution

  • The edges

    should (as per documentation) both be able to take a filter paramenter, containing filter keys from the stream_filter FQL table (https://developers.facebook.com/docs/reference/fql/stream_filter/).

    If I run the FQL

    select name, value, type, filter_key from stream_filter where uid=me()
    

    I get the following result:

    {
      "data": [
        {
          "name": "News Feed", 
          "value": null, 
          "type": "newsfeed", 
          "filter_key": "nf"
        }, 
        {
          "name": "Status Updates", 
          "value": 2915120374, 
          "type": "application", 
          "filter_key": "app_2915120374"
        }, 
        {
          "name": "Photos", 
          "value": 2305272732, 
          "type": "application", 
          "filter_key": "app_2305272732"
        }, 
        {
          "name": "Links", 
          "value": 2309869772, 
          "type": "application", 
          "filter_key": "app_2309869772"
        }, 
        {
          "name": "Pages", 
          "value": null, 
          "type": "public_profiles", 
          "filter_key": "pp"
        }, 
        {
          "name": "Video", 
          "value": 2392950137, 
          "type": "application", 
          "filter_key": "app_2392950137"
        }, 
        {
          "name": "Notes", 
          "value": 2347471856, 
          "type": "application", 
          "filter_key": "app_2347471856"
        }, 
        {
          "name": "Groups", 
          "value": 2361831622, 
          "type": "application", 
          "filter_key": "app_2361831622"
        }
      ]
    }
    

    So, if I choose app_2305272732 as filter key for the photos, I am able to run the follwoing Graph API request successfully:

    /me/home?filter=app_2305272732&limit=3
    

    This gives me the three most recent photo posts from my newsfeed.

    You want to do this for User/Page feeds (Pages are not supported for filtering according to the docs at https://developers.facebook.com/docs/graph-api/reference/v2.1/page/feed#read), so I tried this:

    /me/feed?filter=app_2305272732&limit=3
    

    Unfortunately, this doesn't return only photo posts, at least for me. So I think this is a bug in the Facebook Graph API.