Skip to main content

Requests-Facebook

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-py3 0.2.1

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-py3 0.2.1
File Size Uploaded Provenance Actions
requests-facebook-py3-0.2.1.tar.gz 5.7 kB Without provenance Details for requests-facebook-py3-0.2.1.tar.gz

Release files / requests-facebook-py3-0.2.1.tar.gz

Download URL requests-facebook-py3-0.2.1.tar.gz
Size 5.7 kB
Tags Source
SHA-256 checksum
How to use checksums
973b56be560d9fab64df4170e91303148fcf99699c8dc98e79f0ebe3dbd37585
BLAKE2b-256 checksum
How to use checksums
81eae4ff5b1f341a316e1cce70214922412ea7204494a9c611cb3c65b41285e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for requests-facebook-py3 0.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.1 This release

1 release file No provenance

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