fix: Add Request parameter to Google OAuth endpoints

Pass the FastAPI Request object to authorize_redirect() and authorize_access_token() methods as required by Authlib's Starlette integration
This commit is contained in:
dvirlabs 2026-02-20 16:53:34 +02:00
parent 6ebf2d4b45
commit d830f33e23

View File

@ -1,4 +1,4 @@
from fastapi import FastAPI, HTTPException, Header, Depends from fastapi import FastAPI, HTTPException, Header, Depends, Request
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import RedirectResponse from fastapi.responses import RedirectResponse
from pydantic import BaseModel, Field, ConfigDict from pydantic import BaseModel, Field, ConfigDict
@ -227,17 +227,17 @@ def logout(authorization: Optional[str] = Header(None), db: Session = Depends(ge
return {"message": "Logged out successfully"} return {"message": "Logged out successfully"}
@app.get("/auth/google") @app.get("/auth/google")
async def google_login(): async def google_login(request: Request):
"""Initiate Google OAuth login""" """Initiate Google OAuth login"""
redirect_uri = os.getenv('GOOGLE_REDIRECT_URI', 'http://localhost:8000/auth/google/callback') redirect_uri = os.getenv('GOOGLE_REDIRECT_URI', 'http://localhost:8000/auth/google/callback')
return await oauth.google.authorize_redirect(redirect_uri) return await oauth.google.authorize_redirect(request, redirect_uri)
@app.get("/auth/google/callback") @app.get("/auth/google/callback")
async def google_callback(code: str, db: Session = Depends(get_db)): async def google_callback(request: Request, db: Session = Depends(get_db)):
"""Handle Google OAuth callback""" """Handle Google OAuth callback"""
try: try:
# Get access token from Google # Get access token from Google
token = await oauth.google.authorize_access_token() token = await oauth.google.authorize_access_token(request)
# Get user info from Google # Get user info from Google
user_info = token.get('userinfo') user_info = token.get('userinfo')