FastAPI OAuth Client

FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints. It is build on top of Starlette, that means most of the code looks similar with Starlette code. You should first read documentation of:

  1. Web OAuth Clients

  2. Starlette OAuth Client

Here is how you would create a FastAPI application:

from fastapi import FastAPI
from starlette.middleware.sessions import SessionMiddleware

app = FastAPI()
# we need this to save temporary code & state in session
app.add_middleware(SessionMiddleware, secret_key="some-random-string")

Since Authlib starlette requires using request instance, we need to expose that request to Authlib. According to the documentation on Using the Request Directly:

from starlette.requests import Request

async def login_via_google(request: Request):
    redirect_uri = request.url_for('auth_via_google')
    return await, redirect_uri)

async def auth_via_google(request: Request):
    token = await
    user = token['userinfo']
    return dict(user)

All other APIs are the same with Starlette.

FastAPI OAuth 1.0 Client

We have a blog post about how to create Twitter login in FastAPI:

FastAPI OAuth 2.0 Client

We have a blog post about how to create Google login in FastAPI: