Skip to content

Commit 91530f9

Browse files
committed
fix: Improve thirdparty interface and example
1 parent 2726cfb commit 91530f9

File tree

5 files changed

+93
-43
lines changed

5 files changed

+93
-43
lines changed

examples/with-django/with-thirdpartyemailpassword/project/settings.py

Lines changed: 78 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -72,46 +72,88 @@ def get_website_domain():
7272
emailverification.init("REQUIRED"),
7373
thirdpartyemailpassword.init(
7474
providers=[
75-
Google(
76-
is_default=True,
77-
client_id=os.environ.get("GOOGLE_CLIENT_ID"), # type: ignore
78-
client_secret=os.environ.get("GOOGLE_CLIENT_SECRET"), # type: ignore
75+
thirdpartyemailpassword.ProviderInput(
76+
config=thirdpartyemailpassword.ProviderConfig(
77+
third_party_id="google",
78+
clients=[
79+
thirdpartyemailpassword.ProviderClientConfig(
80+
client_id=os.environ["GOOGLE_CLIENT_ID"],
81+
client_secret=os.environ["GOOGLE_CLIENT_SECRET"],
82+
),
83+
thirdpartyemailpassword.ProviderClientConfig(
84+
client_id=os.environ["GOOGLE_CLIENT_ID_MOBILE"],
85+
client_secret=os.environ["GOOGLE_CLIENT_SECRET_MOBILE"],
86+
),
87+
],
88+
),
7989
),
80-
Google(
81-
client_id=os.environ.get("GOOGLE_CLIENT_ID_MOBILE"), # type: ignore
82-
client_secret=os.environ.get("GOOGLE_CLIENT_SECRET_MOBILE"), # type: ignore
90+
thirdpartyemailpassword.ProviderInput(
91+
config=thirdpartyemailpassword.ProviderConfig(
92+
third_party_id="github",
93+
clients=[
94+
thirdpartyemailpassword.ProviderClientConfig(
95+
client_id=os.environ["GITHUB_CLIENT_ID"],
96+
client_secret=os.environ["GITHUB_CLIENT_SECRET"],
97+
),
98+
thirdpartyemailpassword.ProviderClientConfig(
99+
client_id=os.environ["GITHUB_CLIENT_ID_MOBILE"],
100+
client_secret=os.environ["GITHUB_CLIENT_SECRET_MOBILE"],
101+
),
102+
],
103+
)
83104
),
84-
Github(
85-
is_default=True,
86-
client_id=os.environ.get("GITHUB_CLIENT_ID"), # type: ignore
87-
client_secret=os.environ.get("GITHUB_CLIENT_SECRET"), # type: ignore
105+
# FIXME: Properly migrate apple provider
106+
# Apple(
107+
# is_default=True,
108+
# client_id=os.environ.get("APPLE_CLIENT_ID"), # type: ignore
109+
# client_key_id=os.environ.get("APPLE_KEY_ID"), # type: ignore
110+
# client_team_id=os.environ.get("APPLE_TEAM_ID"), # type: ignore
111+
# client_private_key=os.environ.get("APPLE_PRIVATE_KEY"), # type: ignore
112+
# ),
113+
# Apple(
114+
# client_id=os.environ.get("APPLE_CLIENT_ID_MOBILE"), # type: ignore
115+
# client_key_id=os.environ.get("APPLE_KEY_ID"), # type: ignore
116+
# client_team_id=os.environ.get("APPLE_TEAM_ID"), # type: ignore
117+
# client_private_key=os.environ.get("APPLE_PRIVATE_KEY"), # type: ignore
118+
# ),
119+
thirdpartyemailpassword.ProviderInput(
120+
config=thirdpartyemailpassword.ProviderConfig(
121+
third_party_id="apple",
122+
clients=[
123+
thirdpartyemailpassword.ProviderClientConfig(
124+
client_id=os.environ["APPLE_CLIENT_ID"],
125+
client_secret=os.environ["TODO"], # TODO
126+
),
127+
thirdpartyemailpassword.ProviderClientConfig(
128+
client_id=os.environ["APPLE_CLIENT_ID_MOBILE"],
129+
client_secret=os.environ["TODO"], # TODO
130+
),
131+
],
132+
)
88133
),
89-
Github(
90-
client_id=os.environ.get("GITHUB_CLIENT_ID_MOBILE"), # type: ignore
91-
client_secret=os.environ.get("GITHUB_CLIENT_SECRET_MOBILE"), # type: ignore
134+
thirdpartyemailpassword.ProviderInput(
135+
config=thirdpartyemailpassword.ProviderConfig(
136+
third_party_id="googleworkspaces",
137+
clients=[
138+
thirdpartyemailpassword.ProviderClientConfig(
139+
client_id=os.environ["GOOGLE_WORKSPACES_CLIENT_ID"],
140+
client_secret=os.environ[
141+
"GOOGLE_WORKSPACES_CLIENT_SECRET"
142+
],
143+
),
144+
],
145+
)
92146
),
93-
Apple(
94-
is_default=True,
95-
client_id=os.environ.get("APPLE_CLIENT_ID"), # type: ignore
96-
client_key_id=os.environ.get("APPLE_KEY_ID"), # type: ignore
97-
client_team_id=os.environ.get("APPLE_TEAM_ID"), # type: ignore
98-
client_private_key=os.environ.get("APPLE_PRIVATE_KEY"), # type: ignore
99-
),
100-
Apple(
101-
client_id=os.environ.get("APPLE_CLIENT_ID_MOBILE"), # type: ignore
102-
client_key_id=os.environ.get("APPLE_KEY_ID"), # type: ignore
103-
client_team_id=os.environ.get("APPLE_TEAM_ID"), # type: ignore
104-
client_private_key=os.environ.get("APPLE_PRIVATE_KEY"), # type: ignore
105-
),
106-
GoogleWorkspaces(
107-
is_default=True,
108-
client_id=os.environ.get("GOOGLE_WORKSPACES_CLIENT_ID"), # type: ignore
109-
client_secret=os.environ.get("GOOGLE_WORKSPACES_CLIENT_SECRET"), # type: ignore
110-
),
111-
Discord(
112-
is_default=True,
113-
client_id=os.environ.get("DISCORD_CLIENT_ID"), # type: ignore
114-
client_secret=os.environ.get("DISCORD_CLIENT_SECRET"), # type: ignore
147+
thirdpartyemailpassword.ProviderInput(
148+
config=thirdpartyemailpassword.ProviderConfig(
149+
third_party_id="discord",
150+
clients=[
151+
thirdpartyemailpassword.ProviderClientConfig(
152+
client_id=os.environ["DISCORD_CLIENT_ID"],
153+
client_secret=os.environ["DISCORD_CLIENT_SECRET"],
154+
),
155+
],
156+
)
115157
),
116158
]
117159
),

supertokens_python/recipe/thirdparty/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919

2020
from . import exceptions as ex
21-
from . import utils, provider, providers
21+
from . import utils, provider
2222
from .recipe import ThirdPartyRecipe
2323

2424
InputOverrideConfig = utils.InputOverrideConfig

supertokens_python/recipe/thirdparty/providers/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@
1818
from .google import Google # type: ignore
1919
from .google_workspaces import GoogleWorkspaces # type: ignore
2020
from .bitbucket import Bitbucket # type: ignore
21-
from .gitlab import GitLab # type: ignore
21+
from .gitlab import Gitlab # type: ignore

supertokens_python/recipe/thirdparty/providers/apple.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ async def get_config_for_client_type(
4141

4242
return config
4343

44-
async def _get_client_secret(self, config: ProviderConfigForClientType) -> str:
44+
async def _get_client_secret( # pylint: disable=no-self-use
45+
self, config: ProviderConfigForClientType
46+
) -> str:
4547
if (
4648
config.additional_config is None
4749
or config.additional_config.get("keyId") is None
@@ -68,7 +70,7 @@ async def _get_client_secret(self, config: ProviderConfigForClientType) -> str:
6870
) # type: ignore
6971

7072

71-
def Apple(input: ProviderInput) -> Provider:
73+
def Apple(input: ProviderInput) -> Provider: # pylint: disable=redefined-builtin
7274
if input.config.name is None:
7375
input.config.name = "Apple"
7476

supertokens_python/recipe/thirdparty/providers/custom.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,9 @@ async def exchange_auth_code_for_oauth_tokens(
300300
access_token_params["code_verifier"] = redirect_uri_info.pkce_code_verifier
301301

302302
if self.config.token_endpoint_body_params is not None:
303-
access_token_params = merge_into_dict(self.config.token_endpoint_body_params, access_token_params)
303+
access_token_params = merge_into_dict(
304+
self.config.token_endpoint_body_params, access_token_params
305+
)
304306

305307
# Transformation needed for dev keys BEGIN
306308
if is_using_oauth_development_client_id(self.config.client_id):
@@ -343,10 +345,14 @@ async def get_user_info(
343345

344346
if self.config.user_info_endpoint is not None:
345347
if self.config.user_info_endpoint_headers is not None:
346-
headers = merge_into_dict(self.config.user_info_endpoint_headers, headers)
348+
headers = merge_into_dict(
349+
self.config.user_info_endpoint_headers, headers
350+
)
347351

348352
if self.config.user_info_endpoint_query_params is not None:
349-
query_params = merge_into_dict(self.config.user_info_endpoint_query_params, query_params)
353+
query_params = merge_into_dict(
354+
self.config.user_info_endpoint_query_params, query_params
355+
)
350356

351357
raw_user_info_from_provider.from_user_info_api = await do_get_request(
352358
self.config.user_info_endpoint, query_params, headers

0 commit comments

Comments
 (0)