Skip to content

Commit 59b013c

Browse files
committed
GH-18: Pass all URL params to oauthlib including PKCE ones
1 parent 1eb98e0 commit 59b013c

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

src/fastapi_oauth2/core.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,11 @@ async def login_redirect(self, request: Request) -> RedirectResponse:
8080
redirect_uri = self.get_redirect_uri(request)
8181
state = "".join([random.choice(string.ascii_letters) for _ in range(32)])
8282
return RedirectResponse(str(self._oauth_client.prepare_request_uri(
83-
self.authorization_endpoint, redirect_uri=redirect_uri, state=state, scope=self.scope
83+
self.authorization_endpoint,
84+
state=state,
85+
scope=self.scope,
86+
**request.query_params,
87+
redirect_uri=redirect_uri,
8488
)), 303)
8589

8690
async def token_redirect(self, request: Request) -> RedirectResponse:
@@ -89,17 +93,15 @@ async def token_redirect(self, request: Request) -> RedirectResponse:
8993
if not request.query_params.get("state"):
9094
raise OAuth2LoginError(400, "'state' parameter was not found in callback request")
9195

92-
url = request.url
93-
scheme = "http" if request.auth.http else "https"
94-
current_url = re.sub(r"^https?", scheme, str(url))
9596
redirect_uri = self.get_redirect_uri(request)
97+
scheme = "http" if request.auth.http else "https"
98+
authorization_response = re.sub(r"^https?", scheme, str(request.url))
9699

97100
token_url, headers, content = self._oauth_client.prepare_token_request(
98101
self.token_endpoint,
102+
**request.query_params,
99103
redirect_url=redirect_uri,
100-
authorization_response=current_url,
101-
code=request.query_params.get("code"),
102-
state=request.query_params.get("state"),
104+
authorization_response=authorization_response,
103105
)
104106

105107
headers.update({

0 commit comments

Comments
 (0)