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:
parent
6ebf2d4b45
commit
d830f33e23
@ -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')
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user