Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Retrieving my own data via FaceBook API

I am building a website for a comedy group which uses Facebook as one of their marketing platforms; one of the requirements for the new site is to display all of their Facebook events on a calendar.

Currently, I am just trying to put together a Python script which can pull some data from my own Facebook account, like a list of all my friends. I presume once I can accomplish this I can move to pulling more complicated data out of my clients account (since they have given me access to their account).

I have looked at many of the posts here, and also went through the Facebook API documentation, including Facebook Connect, but am really beating my head against the wall. Everything I have read seems like overkill, as it involves setting up a good deal of infrastructure to allow my app to set up connections to any arbitrary user's account (who authorizes me). Shouldn't it be much simpler, given I only ever need to access 1 account?

I cannot find a way to retrieve data without having to display the Facebook login window. I have a script which will retrieve all my friends, but it includes a redirect where I have to physically log myself in to Facebook.

Would appreciate any advice or links, I just feel like I must be missing something simple.

Thank you!

like image 832
goggin13 Avatar asked May 03 '10 05:05

goggin13


People also ask

Is there a public Facebook API?

The Page Public Content Access feature allows your app access to the Pages Search API and to read public data for Pages for which you lack the pages_read_engagement permission and the pages_read_user_content permission. Readable data includes business metadata, public comments and posts.

Is the Facebook API free?

The Graph API is free to use, for all applicable use cases.


2 Answers

Just posting up my notes on the successful advice, should others find this post;

Per Daniel and William's advice, I obtained the right permissions using the Connect options. From William, this link explains how the Facebook connection works

https://developers.facebook.com/docs/authentication/

This section on setting up the actual authentication was most helpful to me. http://developers.facebook.com/docs/api

Basically, it goes as follows: Post a link to the following URL. A user will need to physically click on it (even if that user is just you, the site admin). https://graph.facebook.com/oauth/authorize?client_id=YOUR_CLIENT_ID&redirect_uri=http://www.example.com/HANDLER

This will redirect to a Facebook login, which will return to http://www.example.com/HANDLER after the user authenticates. If you wish to do more than basic reads and news feed updates you will need to include this variable in the above link: scope=offline_access,user_photos. The scope variable just includes a comma separated list of values, which Facebook will explicitly tell the authenticating user about during the login process, and they will have to OK. Most helpful for me was the offline_access flag (user_photos lets you get at their photos too), so I can pull content without someone logging in regularly (so long as I store the access token obtained later)

Have a script located at http://www.example.com/HANDLER that will take a variable from the request (so facebook will redirect to http://www.example.com/HANDLER&code=YOUR_CODE after authentication). Your handler needs to pull out the code variable, and then send the following request: https://graph.facebook.com/oauth/access_token?
client_id=YOUR_CLIENT_ID&
redirect_uri=http://www.example.com/oauth_redirect&
client_secret=YOUR_SECRET_KEY&
code=YOUR_CODE

This request will return a string of the form access_token=YOUR_ACCESS_TOKEN.

Just parse off the 'access_token=', and you will have a token that you can use to access the facebook graph API, in requests like http://graph.facebook.com/me/friends?access_token=YOUR_ACCESS_TOKEN This will return a JSON object containing all of your friends

Hope this saves someone else some not fun time straining through documentation. Thanks for the help!

like image 181
goggin13 Avatar answered Oct 21 '22 08:10

goggin13


It is true, that Facebook's API is targeted at developers who are creating apps that will be used by many users.

Thankfully, the new Graph API is much simpler to use than its predecessor, and shouldn't be terribly difficult for you to work with without using or creating a lot of underlying infrastructure.

You will need to implement authorization, but this is not difficult, and as long as you prompt the user for the offline_access permission, it'll only need to be done once.

The documentation on Desktop Authentication would probably be most relevant to you at this point, though you might want to move to the javascript-based authentication once you've got a web app up and running.

Once the authentication is done, all you're doing is making GET requests to various urls and working with the resulting JSON.

Here's the documentation about Events, and you can get a list of friends from the friends connection of a User.

like image 23
Daniel Schaffer Avatar answered Oct 21 '22 08:10

Daniel Schaffer