aiohttp-oauth2-session
A fully typed package that adds OAuth2 support for aiohttp.ClientSession.
Installation
pip install aiohttp-oauth2-session
Basic Usage
from aiohttp_oauth2_session import OAuth2Session
You can create a session with or without a token already known.
token = {
"access_token": "abc1234",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "def5678",
}
session = OAuth2Session(
client_id="client_id",
client_secret="client_secret",
redirect_uri="https://example.com/oauth/redirect",
scope="scope1 scope2",
token=token,
)
resp = await session.get("https://example.com/api/resource")
await session.close()
You can also create a session without a token and fetch one later.
session = OAuth2Session(
client_id="client_id",
client_secret="client_secret",
redirect_uri="https://example.com/oauth/redirect",
scope="scope1 scope2",
)
await session.fetch_token(
token_url="https://example.com/oauth/token",
authorization_response="https://example.com/oauth/redirect?code=abc1234",
)
resp = await session.get("https://example.com/api/resource")
await session.close()
You can also use context managers to automatically close the session.
async with OAuth2Session(
client_id="client_id",
client_secret="client_secret",
redirect_uri="https://example.com/oauth/redirect",
scope="scope1 scope2",
) as session:
await session.fetch_token(
token_url="https://example.com/oauth/token",
authorization_response="https://example.com/oauth/redirect?code=abc1234",
)
async with session.get("https://example.com/api/resource") as resp:
print(await resp.json())
Feel free to contribute!
What still needs to be done:
This package is based on a gist by kellerza. Thank you very much!