Spaces:
Sleeping
Sleeping
Commit ·
904f598
1
Parent(s): 1bbee3f
redirect
Browse files- app/routes/auth.py +11 -14
app/routes/auth.py
CHANGED
|
@@ -36,30 +36,27 @@ async def login(request: Request):
|
|
| 36 |
return RedirectResponse(authorization_url)
|
| 37 |
|
| 38 |
|
| 39 |
-
@router.get("/auth/callback")
|
| 40 |
async def auth_callback(request: Request):
|
| 41 |
"""Handle OAuth callback from Google with ?code= and ?state=."""
|
| 42 |
state = request.session.get("state")
|
| 43 |
if not state:
|
| 44 |
return HTMLResponse("<h1>Session state not found. Please /login again.</h1>", status_code=400)
|
| 45 |
-
|
| 46 |
flow = create_flow()
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
# IMPORTANT: pass `redirect_uri` again here:
|
| 52 |
flow.fetch_token(
|
| 53 |
-
authorization_response=str(request.url)
|
| 54 |
-
redirect_uri
|
| 55 |
)
|
| 56 |
-
|
| 57 |
-
#
|
| 58 |
credentials = flow.credentials
|
| 59 |
if not credentials or not credentials.valid:
|
| 60 |
return HTMLResponse("<h1>Invalid credentials. Please /login again.</h1>", status_code=400)
|
| 61 |
-
|
| 62 |
-
# Store credentials in session. In production, store securely (e.g. in DB, encrypted).
|
| 63 |
request.session["credentials"] = {
|
| 64 |
"token": credentials.token,
|
| 65 |
"refresh_token": credentials.refresh_token,
|
|
@@ -68,5 +65,5 @@ async def auth_callback(request: Request):
|
|
| 68 |
"client_secret": credentials.client_secret,
|
| 69 |
"scopes": credentials.scopes
|
| 70 |
}
|
| 71 |
-
|
| 72 |
return RedirectResponse(url="/success", status_code=status.HTTP_302_FOUND)
|
|
|
|
| 36 |
return RedirectResponse(authorization_url)
|
| 37 |
|
| 38 |
|
| 39 |
+
@router.get("/auth/callback")
|
| 40 |
async def auth_callback(request: Request):
|
| 41 |
"""Handle OAuth callback from Google with ?code= and ?state=."""
|
| 42 |
state = request.session.get("state")
|
| 43 |
if not state:
|
| 44 |
return HTMLResponse("<h1>Session state not found. Please /login again.</h1>", status_code=400)
|
| 45 |
+
|
| 46 |
flow = create_flow()
|
| 47 |
+
flow.redirect_uri = GOOGLE_REDIRECT_URI # Set the redirect_uri here instead
|
| 48 |
+
|
| 49 |
+
# Remove the redirect_uri parameter from fetch_token
|
|
|
|
|
|
|
| 50 |
flow.fetch_token(
|
| 51 |
+
authorization_response=str(request.url)
|
| 52 |
+
# Don't pass redirect_uri here, as it's already set on the flow object
|
| 53 |
)
|
| 54 |
+
|
| 55 |
+
# Rest of your code remains the same
|
| 56 |
credentials = flow.credentials
|
| 57 |
if not credentials or not credentials.valid:
|
| 58 |
return HTMLResponse("<h1>Invalid credentials. Please /login again.</h1>", status_code=400)
|
| 59 |
+
|
|
|
|
| 60 |
request.session["credentials"] = {
|
| 61 |
"token": credentials.token,
|
| 62 |
"refresh_token": credentials.refresh_token,
|
|
|
|
| 65 |
"client_secret": credentials.client_secret,
|
| 66 |
"scopes": credentials.scopes
|
| 67 |
}
|
| 68 |
+
|
| 69 |
return RedirectResponse(url="/success", status_code=status.HTTP_302_FOUND)
|