diff --git a/extensions/github-authentication/src/flows.ts b/extensions/github-authentication/src/flows.ts index 45449fb4a10..a6922c22dc8 100644 --- a/extensions/github-authentication/src/flows.ts +++ b/extensions/github-authentication/src/flows.ts @@ -177,7 +177,7 @@ class UrlHandlerFlow implements IFlow { callbackUri, enterpriseUri, nonce, - signInProvider: authProvider, + signInProvider, uriHandler, existingLogin, logger, @@ -205,11 +205,14 @@ class UrlHandlerFlow implements IFlow { } else { searchParams.append('prompt', 'select_account'); } + if (signInProvider) { + searchParams.append('provider', signInProvider); + } // The extra toString, parse is apparently needed for env.openExternal // to open the correct URL. const uri = Uri.parse(baseUri.with({ - path: getAuthorizeUrlPath(authProvider), + path: '/login/oauth/authorize', query: searchParams.toString() }).toString(true)); await env.openExternal(uri); @@ -253,7 +256,7 @@ class LocalServerFlow implements IFlow { redirectUri, callbackUri, enterpriseUri, - signInProvider: authProvider, + signInProvider, existingLogin, logger }: IFlowTriggerOptions): Promise { @@ -277,9 +280,12 @@ class LocalServerFlow implements IFlow { } else { searchParams.append('prompt', 'select_account'); } + if (signInProvider) { + searchParams.append('provider', signInProvider); + } const loginUrl = baseUri.with({ - path: getAuthorizeUrlPath(authProvider), + path: '/login/oauth/authorize', query: searchParams.toString() }); const server = new LoopbackAuthServer(path.join(__dirname, '../media'), loginUrl.toString(true), callbackUri.toString(true)); @@ -565,12 +571,3 @@ export const enum GitHubSocialSignInProvider { export function isSocialSignInProvider(provider: unknown): provider is GitHubSocialSignInProvider { return provider === GitHubSocialSignInProvider.Google; // || provider === GitHubSocialSignInProvider.Apple; } - -export function getAuthorizeUrlPath(provider: GitHubSocialSignInProvider | undefined): string { - switch (provider) { - case GitHubSocialSignInProvider.Google: - // case GitHubSocialSignInProvider.Apple: - return `/sessions/social/${provider}/initiate`; - } - return '/login/oauth/authorize'; -}