From b076c35848ff1e983d54c9f4fb2756ed250ccf08 Mon Sep 17 00:00:00 2001 From: neo773 <62795688+neo773@users.noreply.github.com> Date: Tue, 16 Jun 2026 22:17:30 +0530 Subject: [PATCH] fix(messaging): pin Google OAuth2 client to native fetch (#21668) /closes TWENTY-SERVER-HFH Review in cubic --- .../services/google-apis-service-availability.service.ts | 9 +++++---- .../drivers/google/google-oauth2-client.provider.ts | 6 +++++- .../google/services/google-api-refresh-tokens.service.ts | 9 +++++---- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/packages/twenty-server/src/engine/core-modules/auth/services/google-apis-service-availability.service.ts b/packages/twenty-server/src/engine/core-modules/auth/services/google-apis-service-availability.service.ts index 35c89916f5..f445eddc16 100644 --- a/packages/twenty-server/src/engine/core-modules/auth/services/google-apis-service-availability.service.ts +++ b/packages/twenty-server/src/engine/core-modules/auth/services/google-apis-service-availability.service.ts @@ -20,10 +20,11 @@ export class GoogleApisServiceAvailabilityService { async checkServicesAvailability( accessToken: string, ): Promise { - const oAuth2Client = new google.auth.OAuth2( - this.twentyConfigService.get('AUTH_GOOGLE_CLIENT_ID'), - this.twentyConfigService.get('AUTH_GOOGLE_CLIENT_SECRET'), - ); + const oAuth2Client = new google.auth.OAuth2({ + clientId: this.twentyConfigService.get('AUTH_GOOGLE_CLIENT_ID'), + clientSecret: this.twentyConfigService.get('AUTH_GOOGLE_CLIENT_SECRET'), + transporterOptions: { fetchImplementation: fetch }, + }); oAuth2Client.setCredentials({ access_token: accessToken, diff --git a/packages/twenty-server/src/modules/connected-account/oauth2-client-manager/drivers/google/google-oauth2-client.provider.ts b/packages/twenty-server/src/modules/connected-account/oauth2-client-manager/drivers/google/google-oauth2-client.provider.ts index f78e34613c..6d4a3a3d4d 100644 --- a/packages/twenty-server/src/modules/connected-account/oauth2-client-manager/drivers/google/google-oauth2-client.provider.ts +++ b/packages/twenty-server/src/modules/connected-account/oauth2-client-manager/drivers/google/google-oauth2-client.provider.ts @@ -72,7 +72,11 @@ export class GoogleOAuth2ClientProvider { ); try { - const oAuth2Client = new google.auth.OAuth2(clientId, clientSecret); + const oAuth2Client = new google.auth.OAuth2({ + clientId, + clientSecret, + transporterOptions: { fetchImplementation: fetch }, + }); oAuth2Client.setCredentials({ refresh_token: plaintextRefreshToken }); diff --git a/packages/twenty-server/src/modules/connected-account/refresh-tokens-manager/drivers/google/services/google-api-refresh-tokens.service.ts b/packages/twenty-server/src/modules/connected-account/refresh-tokens-manager/drivers/google/services/google-api-refresh-tokens.service.ts index 997aff47ea..1e93b04bb9 100644 --- a/packages/twenty-server/src/modules/connected-account/refresh-tokens-manager/drivers/google/services/google-api-refresh-tokens.service.ts +++ b/packages/twenty-server/src/modules/connected-account/refresh-tokens-manager/drivers/google/services/google-api-refresh-tokens.service.ts @@ -19,10 +19,11 @@ export class GoogleAPIRefreshAccessTokenService { async refreshTokens( refreshToken: PlaintextString, ): Promise { - const oAuth2Client = new google.auth.OAuth2( - this.twentyConfigService.get('AUTH_GOOGLE_CLIENT_ID'), - this.twentyConfigService.get('AUTH_GOOGLE_CLIENT_SECRET'), - ); + const oAuth2Client = new google.auth.OAuth2({ + clientId: this.twentyConfigService.get('AUTH_GOOGLE_CLIENT_ID'), + clientSecret: this.twentyConfigService.get('AUTH_GOOGLE_CLIENT_SECRET'), + transporterOptions: { fetchImplementation: fetch }, + }); oAuth2Client.setCredentials({ refresh_token: refreshToken,