From bfe489d920c2095a6e724efdc790f88345eba72d Mon Sep 17 00:00:00 2001 From: MOHAN Date: Wed, 15 Jul 2026 21:08:06 +0530 Subject: [PATCH] Refactor GoogleService: streamline token handling and improve comments --- src/google/google.service.ts | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/google/google.service.ts b/src/google/google.service.ts index 2656e58..15817b8 100644 --- a/src/google/google.service.ts +++ b/src/google/google.service.ts @@ -1,6 +1,5 @@ import { BadRequestException, Injectable, Logger } from "@nestjs/common"; import { google } from "googleapis"; -import { Credentials } from "google-auth-library"; import { PrismaService } from "../prisma/prisma.service"; const SCOPES = [ @@ -31,19 +30,18 @@ export class GoogleService { const authUrl = client.generateAuthUrl({ access_type: "offline", scope: SCOPES, - prompt: "consent", - state: userId, + prompt: "consent", // always request a refresh_token + state: userId, // passed back in callback to identify the user }); return { authUrl }; } async exchangeCode(userId: string, code: string) { const client = this.createClient(); - let tokens: Credentials; - + let tokens: import("google-auth-library").Credentials; try { - const { tokens: t } = await client.getToken(code); - tokens = t; + const result = await client.getToken(code); + tokens = result.tokens; } catch { throw new BadRequestException("Invalid or expired authorization code."); } @@ -54,6 +52,7 @@ export class GoogleService { ); } + // Fetch the Google account email client.setCredentials(tokens); const oauth2 = google.oauth2({ version: "v2", auth: client }); const { data } = await oauth2.userinfo.get(); @@ -67,7 +66,7 @@ export class GoogleService { accessToken: tokens.access_token ?? null, isConnected: true, connectedAt: new Date(), - spreadsheetId: null, + spreadsheetId: null, // reset so a new spreadsheet is created on next export }, create: { userId, @@ -92,4 +91,4 @@ export class GoogleService { if (!gc || !gc.isConnected) return { connected: false }; return { connected: true, googleEmail: gc.googleEmail, connectedAt: gc.connectedAt }; } -} \ No newline at end of file +}