Hook for adding Open Authentication support to Python-requests HTTP library.
Pull request Compare This branch is 74 commits behind maraujop:dev.
Latest commit d7694a3 Oct 20, 2011 Christopher Toth Removed unnecessary imports from setup script



This is a hook for python-requests great python HTTP library by Kenneth Reitz, that makes python-requests support Open Authentication version 1.0.

This hook is based on python-oauth2 and uses portions of its code at the moment, kudos to the authors and contributors for doing a huge effort in providing OAuth to python httplib2.


You can install requests-oauth-hook, simply:

pip install requests-oauth-hook


You need to initialize the hook passing it 4 things: access_token, access_token_secret, consumer_key, consumer_secret. There are two ways to do this. First one:

oauth_hook = OAuthHook(access_token, access_token_secret, consumer_key, consumer_secret)

If you are using the same consumer_key and consumer_secret all the time, you probably want to setup those fixed, so that you only have to pass the token parameters for settings the hook:

OAuthHook.consumer_key = consumer_key
OAuthHook.consumer_secret = consumer_secret
oauth_hook = OAuthHook(access_token, access_token_secret)

Now you need to pass the hook to python-requests, you probably want to do it as a session, so you don't have to do this every time:

client = requests.session(hooks={'pre_request': oauth_hook})

What you get is python-requests client which you can use the same way as you use requests API. Let's see a GET example:

response = client.get('http://api.twitter.com/1/account/rate_limit_status.json')
results = json.loads(response.content)

And a POST example:

response = client.post('http://api.twitter.com/1/statuses/update.json', {'status': "Yay! It works!", 'wrap_links': True})


If you want to run the tests, you will need to copy test_settings.py.template into test_settings.py. This file is in the .gitignore index, so it won't be committed:

cp test_settings.py.template test_settings.py

Then fill in the information there. At the moment, the testing of the library is done in a functional way, doing a GET and a POST request against Twitter API:



If you'd like to contribute, simply fork the repository, commit your changes to the dev branch (or branch off of it), and send a pull request. Make sure you add yourself to AUTHORS.


  • Review python-oauth2 pull requests and bugs. It looks like it's not being maintained anymore.
  • Work on real unit tests.
  • Support for python3.