From 5b7b6fe608257381f522df5432d76e9fdf2bc144 Mon Sep 17 00:00:00 2001 From: Marat Boshernitsan Date: Fri, 18 Jul 2025 17:22:50 -0700 Subject: Automatically detect non-interactive environments and fall back to a manual, code-based authentication flow (#4475) --- packages/core/src/code_assist/oauth2.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'packages/core/src/code_assist/oauth2.ts') diff --git a/packages/core/src/code_assist/oauth2.ts b/packages/core/src/code_assist/oauth2.ts index ac45177c..51227086 100644 --- a/packages/core/src/code_assist/oauth2.ts +++ b/packages/core/src/code_assist/oauth2.ts @@ -26,6 +26,7 @@ import { clearCachedGoogleAccount, } from '../utils/user_account.js'; import { AuthType } from '../core/contentGenerator.js'; +import { shouldAttemptBrowserLaunch } from '../utils/browser.js'; import readline from 'node:readline'; // OAuth Client ID used to initiate OAuth2Client class. @@ -121,7 +122,7 @@ export async function getOauthClient( } } - if (config.getNoBrowser()) { + if (config.getNoBrowser() || !shouldAttemptBrowserLaunch()) { let success = false; const maxRetries = 2; for (let i = 0; !success && i < maxRetries; i++) { @@ -156,15 +157,17 @@ export async function getOauthClient( // causing the entire Node.js process to crash. childProcess.on('error', (_) => { console.error( - 'Failed to open browser automatically. Please open the URL manually:', + 'Failed to open browser automatically. Please try running again with NO_BROWSER=true set.', ); - console.error(webLogin.authUrl); + process.exit(1); }); } catch (err) { console.error( 'An unexpected error occurred while trying to open the browser:', err, + '\nPlease try running again with NO_BROWSER=true set.', ); + process.exit(1); } console.log('Waiting for authentication...'); @@ -175,7 +178,7 @@ export async function getOauthClient( } async function authWithUserCode(client: OAuth2Client): Promise { - const redirectUri = 'https://sdk.cloud.google.com/authcode_cloudcode.html'; + const redirectUri = 'https://codeassist.google.com/authcode'; const codeVerifier = await client.generateCodeVerifierAsync(); const state = crypto.randomBytes(32).toString('hex'); const authUrl: string = client.generateAuthUrl({ -- cgit v1.2.3