Skip to content
This repository was archived by the owner on Sep 8, 2025. It is now read-only.

Commit a7a9cea

Browse files
authored
fix: use query params for all httpx requests (#662)
1 parent 74c6db0 commit a7a9cea

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

supabase_auth/_async/gotrue_client.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -410,10 +410,10 @@ async def sign_in_with_oauth(
410410
params["redirect_to"] = redirect_to
411411
if scopes:
412412
params["scopes"] = scopes
413-
url = await self._get_url_for_provider(
413+
url_with_qs, _ = await self._get_url_for_provider(
414414
f"{self._url}/authorize", provider, params
415415
)
416-
return OAuthResponse(provider=provider, url=url)
416+
return OAuthResponse(provider=provider, url=url_with_qs)
417417

418418
async def link_identity(
419419
self, credentials: SignInWithOAuthCredentials
@@ -428,9 +428,8 @@ async def link_identity(
428428
if scopes:
429429
params["scopes"] = scopes
430430
params["skip_http_redirect"] = "true"
431-
url = await self._get_url_for_provider(
432-
"user/identities/authorize", provider, params
433-
)
431+
url = "user/identities/authorize"
432+
_, query = await self._get_url_for_provider(url, provider, params)
434433

435434
session = await self.get_session()
436435
if not session:
@@ -439,6 +438,7 @@ async def link_identity(
439438
response = await self._request(
440439
method="GET",
441440
path=url,
441+
query=query,
442442
jwt=session.access_token,
443443
xform=parse_link_identity_response,
444444
)
@@ -1109,7 +1109,7 @@ async def _get_url_for_provider(
11091109
url: str,
11101110
provider: Provider,
11111111
params: Dict[str, str],
1112-
) -> str:
1112+
) -> Tuple[str, Dict[str, str]]:
11131113
if self._flow_type == "pkce":
11141114
code_verifier = generate_pkce_verifier()
11151115
code_challenge = generate_pkce_challenge(code_verifier)
@@ -1124,7 +1124,7 @@ async def _get_url_for_provider(
11241124

11251125
params["provider"] = provider
11261126
query = urlencode(params)
1127-
return f"{url}?{query}"
1127+
return f"{url}?{query}", params
11281128

11291129
def _decode_jwt(self, jwt: str) -> DecodedJWTDict:
11301130
"""
@@ -1138,7 +1138,8 @@ async def exchange_code_for_session(self, params: CodeExchangeParams):
11381138
)
11391139
response = await self._request(
11401140
"POST",
1141-
"token?grant_type=pkce",
1141+
"token",
1142+
query={"grant_type": "pkce"},
11421143
body={
11431144
"auth_code": params.get("auth_code"),
11441145
"code_verifier": code_verifier,

supabase_auth/_sync/gotrue_client.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -410,8 +410,10 @@ def sign_in_with_oauth(
410410
params["redirect_to"] = redirect_to
411411
if scopes:
412412
params["scopes"] = scopes
413-
url = self._get_url_for_provider(f"{self._url}/authorize", provider, params)
414-
return OAuthResponse(provider=provider, url=url)
413+
url_with_qs, _ = self._get_url_for_provider(
414+
f"{self._url}/authorize", provider, params
415+
)
416+
return OAuthResponse(provider=provider, url=url_with_qs)
415417

416418
def link_identity(self, credentials: SignInWithOAuthCredentials) -> OAuthResponse:
417419
provider = credentials.get("provider")
@@ -424,7 +426,8 @@ def link_identity(self, credentials: SignInWithOAuthCredentials) -> OAuthRespons
424426
if scopes:
425427
params["scopes"] = scopes
426428
params["skip_http_redirect"] = "true"
427-
url = self._get_url_for_provider("user/identities/authorize", provider, params)
429+
url = "user/identities/authorize"
430+
_, query = self._get_url_for_provider(url, provider, params)
428431

429432
session = self.get_session()
430433
if not session:
@@ -433,6 +436,7 @@ def link_identity(self, credentials: SignInWithOAuthCredentials) -> OAuthRespons
433436
response = self._request(
434437
method="GET",
435438
path=url,
439+
query=query,
436440
jwt=session.access_token,
437441
xform=parse_link_identity_response,
438442
)
@@ -1101,7 +1105,7 @@ def _get_url_for_provider(
11011105
url: str,
11021106
provider: Provider,
11031107
params: Dict[str, str],
1104-
) -> str:
1108+
) -> Tuple[str, Dict[str, str]]:
11051109
if self._flow_type == "pkce":
11061110
code_verifier = generate_pkce_verifier()
11071111
code_challenge = generate_pkce_challenge(code_verifier)
@@ -1114,7 +1118,7 @@ def _get_url_for_provider(
11141118

11151119
params["provider"] = provider
11161120
query = urlencode(params)
1117-
return f"{url}?{query}"
1121+
return f"{url}?{query}", params
11181122

11191123
def _decode_jwt(self, jwt: str) -> DecodedJWTDict:
11201124
"""
@@ -1128,7 +1132,8 @@ def exchange_code_for_session(self, params: CodeExchangeParams):
11281132
)
11291133
response = self._request(
11301134
"POST",
1131-
"token?grant_type=pkce",
1135+
"token",
1136+
query={"grant_type": "pkce"},
11321137
body={
11331138
"auth_code": params.get("auth_code"),
11341139
"code_verifier": code_verifier,

0 commit comments

Comments
 (0)