Skip to main content

Requests-Facebook is a Python library to help interface with Facebook Graph API using the awesome requests library by @kennethreitz

Features

  • Authenticating Users

  • Dyanmic Facebook methods
    • Read home feeds/user feeds

    • Post status updates

    • Delete items

    • Like items

    • And many more!!

  • Photo Uploading

Installation

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_url

Once 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_feed

Getting 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_feed

Creating 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_album

Posting 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 StringIO

photo = 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.message

Catching 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

Metadata

Release files for requests-facebook 0.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for requests-facebook 0.4.2
File Size Uploaded
requests-facebook-0.4.2.tar.gz 5.8 kB Details

Release files / requests-facebook-0.4.2.tar.gz

Download URL requests-facebook-0.4.2.tar.gz
Size 5.8 kB
Tags Source
SHA-256 checksum
How to use checksums
4af174b06afd9cb87758450f02df495975324f851114250e63309f7b24fc1cc9
BLAKE2b-256 checksum
How to use checksums
b1b21cb4eb6db7da5f6a1e8eccee59a45a061057dffa30167d03e980f696ec4f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.4.2 This release

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.0

1 release file

0.2.0

1 release file

0.1.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page