Async -OAuthlib: OAuth for Humans¶
Requests-OAuthlib uses the Python Aiohttp and OAuthlib libraries to provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients.
Overview¶
A simple Flask application which connects to the Github OAuth2 API looks approximately like this:
from async_oauthlib import OAuth2Session
from quart import Quart, request, redirect, session, url_for
from quart.json import jsonify
# This information is obtained upon registration of a new GitHub
client_id = "<your client key>"
client_secret = "<your client secret>"
authorization_base_url = 'https://github.com/login/oauth/authorize'
token_url = 'https://github.com/login/oauth/access_token'
@app.route("/login")
async def login():
github = OAuth2Session(client_id)
authorization_url, state = github.authorization_url(authorization_base_url)
# State is used to prevent CSRF, keep this for later.
session['oauth_state'] = state
return redirect(authorization_url)
@app.route("/callback")
async def callback():
github = OAuth2Session(client_id, state=session['oauth_state'])
token = await github.fetch_token(token_url, client_secret=client_secret, authorization_response=request.url)
return jsonify((await github.get('https://api.github.com/user')).json())
The above is a truncated example. A full working example is available here: Web App Example of OAuth 2 web application flow
Getting Started:¶
- OAuth 1 Workflow
- OAuth 2 Workflow
- Examples
- Bitbucket OAuth 1 Tutorial
- GitHub OAuth 2 Tutorial
- Google OAuth 2 Tutorial
- Facebook OAuth 2 Tutorial
- Fitbit OAuth 2 (Mobile Application Flow) Tutorial
- LinkedIn OAuth 2 Tutorial
- Outlook Calendar OAuth 2 Tutorial
- Tumblr OAuth1 Tutorial
- Web App Example of OAuth 2 web application flow
- Refreshing tokens in OAuth 2
- Developer Interface