Home/Documentation/How to Add GitHub OAuth to FastAPI
GuidesImplementation guide

How to Add GitHub OAuth to FastAPI

Implement GitHub OAuth in FastAPI with safe callback handling, app-scoped provider linking, and clean session issuance.

GitHub OAuth is especially common in developer products and internal tools. The integration looks simple until the platform has multiple apps, separate redirect policies, and stricter operational expectations. 1Auth keeps the flow app-scoped and backend-owned.

What you need before you start

The cleanest implementation path begins with explicit routing, callback, and ownership decisions.

  • Create the GitHub OAuth app and register the exact callback URL for the product.
  • Define how state is stored and how denied-consent or partial callback failures will be handled.
  • Decide whether the GitHub flow is primary login, an additional provider, or only for specific apps.

Implementation path

This is the shortest path from a blank auth service to a production-ready flow with isolation and recovery in place.

Initialize the redirect flow

Generate state server-side, bind it to the app and intended callback, and redirect the browser to GitHub.

Exchange and validate on callback

Confirm the state, exchange the returned code, and map the GitHub identity into the app-scoped account model.

Issue your own auth session

Use the provider result to mint your own app-aware JWT and refresh session rather than treating the provider token as the final auth artifact.

Avoid these mistakes

Most rework comes from taking shortcuts around token delivery, redirect matching, or app boundaries.

  • Do not treat provider callback errors as edge cases; they are part of the normal operational path.
  • Do not link provider identities globally if the product model requires same-email-separate-account behavior across apps.
  • Do not blur callback allowlists between internal tools, developer products, and customer-facing apps.

FAQ

Questions teams ask before they ship

Is GitHub OAuth mostly useful for developer products?

That is where it is most common, but it can also fit internal tools or any audience that already uses GitHub heavily.

Should provider tokens become app sessions directly?

Usually no. It is cleaner to use the provider only for authentication and then issue your own session tokens with your own app boundary.