Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/michaelhelmick/requests-facebook
A Python Library to interface with Facebook Graph API
https://github.com/michaelhelmick/requests-facebook
api facebook graph python
Last synced: 6 days ago
JSON representation
A Python Library to interface with Facebook Graph API
- Host: GitHub
- URL: https://github.com/michaelhelmick/requests-facebook
- Owner: michaelhelmick
- License: bsd-2-clause
- Created: 2012-06-06T21:26:11.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2018-01-16T16:34:41.000Z (almost 7 years ago)
- Last Synced: 2024-10-31T22:50:22.355Z (13 days ago)
- Topics: api, facebook, graph, python
- Language: Python
- Size: 17.6 KB
- Stars: 73
- Watchers: 8
- Forks: 17
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
Requests-Facebook
=================``Requests-Facebook`` is a Python library to help interface with the `Facebook Graph API `_ using the awesome ``requests`` library by `@kennethreitz `_
Features
--------* Authenticating Users
* Dynamic Facebook methods
- Read home feeds/user feeds
- Post status updates
- Delete items
- Like items
- And many more!!
* Photo UploadingInstallation
------------Installing Requests-Facebook is simple: ::
$ pip install requests-facebook
Usage
-----Authorization URL
~~~~~~~~~~~~~~~~~::
f = FacebookAPI(client_id='*your app key*',
client_secret='*your app secret*',
redirect_uri='http://example.com/callback/')or
::
f = FacebookAPI('*your app key*', '*your app secret*', 'http://example.com/callback/')
::
auth_url = f.get_auth_url(scope=['publish_stream', 'user_photos', 'user_status'])
print 'Connect with Facebook via: %s' % auth_urlOnce you click "Allow" be sure that there is a URL set up to handle getting finalized access_token and possibly adding it to your database to access their information at a later date.
Handling the Callback
~~~~~~~~~~~~~~~~~~~~~
::# Assume you are using the FacebookAPI object from the Authorization URL code
# You'll need to obtain `code` from the url query string
# In Django, you'd do something like
# code = request.GET.get('code')access_token = f.get_access_token(code)
final_access_token = access_token['access_token']
# Save that token to the database for a later use?Dynamic Facebook methods
~~~~~~~~~~~~~~~~~~~~~~~~
Say you have the url ``https://graph.facebook.com/me/friends``
To make a call via this library, you'd do ``GraphAPI.get('me/friends')``You just take everything in the url *AFTER* ``https://graph.facebook.com/``
Getting some User information
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::# Get the final tokens from the database or wherever you have them stored
graph = GraphAPI(access_token)
# Print out your information
try:
print graph.get('me')
except FacebookClientError:
print 'Failed! :('# Print out my information
print graph.get('mikehimself')Getting your Home Feed
~~~~~~~~~~~~~~~~~~~~~~
::# Assume you are using the GraphAPI instance from the previous section
home_feed = graph.get('me/home')
print home_feedGetting a Profile Feed
~~~~~~~~~~~~~~~~~~~~~~
::# Assume you are using the GraphAPI instance from the previous section
your_feed = graph.get('me/feed')
print your_feed# Getting my profile feed
my_feed = graph.get('mikehimself/feed')
print my_feedCreating a Photo Album
~~~~~~~~~~~~~~~~~~~~~~
::# Assume you are using the GraphAPI instance from the previous section
new_album = graph.post('me/albums', params={'name':'Test Album'})
print new_albumPosting a Photo
~~~~~~~~~~~~~~~
::# Assume you are using the GraphAPI instance from the previous section
# Assume you are using the album you just created in the previous section# new_album = new_album var from the previous section
album_id = new_album['id']photo = open('path/to/file/image.jpg', 'rb')
# The file key that Facebook expects is 'source', so 'source' will be apart
# of the params dict.# You can pass any object that has a read() function (like a StringIO object)
# In case you wanted to resize it first or something!new_photo = graph.post('%s/photos' % album_id, params={'message':'My photo caption!', 'source': photo})
print new_photo
Posting an Edited Photo *(This example resizes a photo)*
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::# Assume you are using the GraphAPI instance from the previous section
# Assume you are using the album you just created in the previous sections# Like I said in the previous section, you can pass any object that has a
# read() method# Assume you are working with a JPEG
from PIL import Image
from StringIO import StringIOphoto = Image.open('/path/to/file/image.jpg')
basewidth = 320
wpercent = (basewidth / float(photo.size[0]))
height = int((float(photo.size[1]) * float(wpercent)))
photo = photo.resize((basewidth, height), Image.ANTIALIAS)image_io = StringIO.StringIO()
photo.save(image_io, format='JPEG')
image_io.seek(0)try:
new_photo = graph.post('%s/photos' % album_id, params={'message':'My photo caption!', 'source': photo})
except FacebookClientError, e:
# Maybe the file was invalid?
print e.messageCatching errors **(In case you didn't catch it in the first example)**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::# Assume you are using the GraphAPI instance from the previous section
try:
graph.delete('me/feed')
except FacebookClientError, e:
print e.message
print 'Something bad happened :('TODO
----
Support for Facebook REST API