How to get all content posted by a Facebook Group using Graph API
Asked Answered
K

3

9

I am very new to the Graph API and trying to write a simple python script that first identifies all pages that a user has liked and all groups that he/she is a part of. To do this, I used the following:

To get the groups he has joined:

API: /{user-id}/groups 
Permissions req: user_groups 


To get the pages he has liked:

API: /{user-id}/likes 
Permissions req: user_likes

and 
    url='https://graph.facebook.com/'+userId+'/likes?access_token='+accessToken +'&limit='+str(limit)

Now that I can see the id's of the groups in the JSON output, I want to hit them one by one and fetch all content (posts, comments, photos etc.) posted within that group. Is this possible and if yes, how can I do it? What API calls do I have to make?

Kerek answered 4/4, 2014 at 16:27 Comment(0)
A
8

That's quite a broad question, before asking here you should have give a try searching on SO.

Anyways, I'll tell you broadly how can you do it.

First of all go through the official documentation of Graph API: Graph API Reference.
You'll find each and every API which can be used to fetch the data. For example: /group, /page. You'll get to know what kind of access token with what permissions are required for an API call.

Here are some API calls useful to you-

  • to fetch the group/page's posts- /{group-id/page-id}/posts

  • to fetch the comments of a post- {post-id}/comments

  • to fetch the group/page's photos- /{group-id/page-id}/photos

and so on. Once you'll go through the documentation and test some API calls, the things would be much clear. It's quite easy!

Hope it helps. Good luck!

Activist answered 4/4, 2014 at 16:50 Comment(0)
L
3

Here's an example using facepy:

from facepy import GraphAPI
import json

graph = GraphAPI(APP_TOKEN)

groupIDs = ("[id here]","[etc]")

outfile_name ="teacher-groups-summary-export-data.csv"
f = csv.writer(open(outfile_name, "wb+"))

for gID in groupIDs:
  groupData = graph.get(gID + "/feed", page=True, retry=3, limit=500)


    for data in groupData:
        json_data=json.dumps(data, indent = 4,cls=DecimalEncoder)
        decoded_response = json_data.decode("UTF-8")
        data = json.loads(decoded_response)
        print "Paging group data..."

        for item in data["data"]:
            ...etc, dealing with items...
Lacewing answered 17/12, 2015 at 6:34 Comment(0)
B
2

Check the API reference. You should use feed.

You can use /{group-id}/feed to get an array of Post objects of the group. Remember to include a user access token for a member of the group.

Boscage answered 4/4, 2014 at 16:50 Comment(1)
How would you go about just getting the text or datetime? I am having trouble parsing the output.Alluvion

© 2022 - 2024 — McMap. All rights reserved.