Support logging in with Application Default Credentials (#1157)

Co-authored-by: N. Taylor Mullen <ntaylormullen@google.com>
This commit is contained in:
Tommaso Sciortino
2025-06-18 09:49:13 -07:00
committed by GitHub
parent 5b2cea8eda
commit 3453b977b8
5 changed files with 50 additions and 42 deletions

View File

@@ -4,6 +4,7 @@
* SPDX-License-Identifier: Apache-2.0
*/
import { GoogleAuth, AuthClient } from 'google-auth-library';
import { ContentGenerator } from '../core/contentGenerator.js';
import { getOauthClient } from './oauth2.js';
import { setupUser } from './setup.js';
@@ -12,10 +13,17 @@ import { CodeAssistServer, HttpOptions } from './server.js';
export async function createCodeAssistContentGenerator(
httpOptions: HttpOptions,
): Promise<ContentGenerator> {
const oauth2Client = await getOauthClient();
const projectId = await setupUser(
oauth2Client,
process.env.GOOGLE_CLOUD_PROJECT,
);
return new CodeAssistServer(oauth2Client, projectId, httpOptions);
const authClient = await getAuthClient();
const projectId = await setupUser(authClient);
return new CodeAssistServer(authClient, projectId, httpOptions);
}
async function getAuthClient(): Promise<AuthClient> {
try {
// Try for Application Default Credentials.
return await new GoogleAuth().getClient();
} catch (_) {
// No Application Default Credentials so try Oauth.
return await getOauthClient();
}
}