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
---
.../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,