Spaces:
Running
Running
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)
|