https://github.com/globocom/tornado-alf
Tornado Oauth 2 client
https://github.com/globocom/tornado-alf
oauth2-client python tornado
Last synced: 4 months ago
JSON representation
Tornado Oauth 2 client
- Host: GitHub
- URL: https://github.com/globocom/tornado-alf
- Owner: globocom
- License: mit
- Created: 2014-02-19T21:36:44.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2022-12-20T13:52:55.000Z (about 3 years ago)
- Last Synced: 2025-04-06T08:36:39.765Z (9 months ago)
- Topics: oauth2-client, python, tornado
- Language: Python
- Size: 40 KB
- Stars: 17
- Watchers: 83
- Forks: 10
- Open Issues: 1
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
tornado-alf |build-status|
===========
Tornado OAuth 2 Client
---------------------
`tornado-alf` is a OAuth 2 Client base on the tornado's AsyncHTTPClient
Features
--------
* Automatic token retrieving and renewing
* Token expiration control
* Automatic retry on status 401 (UNAUTHORIZED)
Usage
-----
Initialize the client and use it as a AsyncHTTPClient object.
.. code-block:: python
from tornadoalf.client import Client
from tornadoalf.httpclient import HTTPRequest
client = Client(
token_endpoint='http://example.com/token',
client_id='client-id',
client_secret='secret')
resource_uri = 'http://example.com/resource'
response = await client.fetch(HTTPRequest(resource_uri),
method='POST', body='{"name": "alf"}',
headers={'Content-Type': 'application/json'})
Alternatively one can pass directly a string to the fetch client
.. code-block:: python
# ...
response = await client.fetch('http://example.com/resource',
method='POST', body='{"name": "alf"}',
headers={'Content-Type': 'application/json'})
How it works?
-------------
Before any request the client tries to retrieve a token on the endpoint,
expecting a JSON response with the ``access_token`` and ``expires_in`` keys.
The client keeps the token until it is expired, according to the ``expires_in``
value.
After getting the token, the request is issued with a `Bearer authorization
header `_:
.. code-block::
GET /resource/1 HTTP/1.1
Host: example.com
Authorization: Bearer token
If the request fails with a 401 (UNAUTHORIZED) status, a new token is retrieved
from the endpoint and the request is retried. This happens only once, if it
fails again the error response is returned.
Troubleshooting
---------------
In case of an error retrieving a token, the error response will be returned,
the real request won't happen.
Related projects
----------------
This project tries to be an adaptation to tornado of
`alf `_
.. |build-status| image:: https://secure.travis-ci.org/globocom/tornado-alf.png?branch=master
:target: https://travis-ci.org/globocom/tornado-alf