// utils/refreshToken.js const { oAuth2Client } = require('../config/googleOAuth'); // Import the OAuth client // Store the user's tokens let userTokens = {}; // Method to check if the access token is expired and refresh it async function checkAndRefreshAccessToken() { userTokens = {}; // Reset tokens at start if (process.env.ACCESS_TOKEN && process.env.REFRESH_TOKEN) { userTokens = { access_token: process.env.ACCESS_TOKEN, refresh_token: process.env.REFRESH_TOKEN, }; oAuth2Client.setCredentials(userTokens); console.log('Using tokens from .env file'); } else { console.log('No tokens found in .env file. Please authenticate.'); } // console.log(oAuth2Client) if (oAuth2Client.isTokenExpiring()) { try { // Refresh the token if it's expired or about to expire const response = await oAuth2Client.refreshAccessToken(); const newTokens = response.credentials; oAuth2Client.setCredentials(newTokens); // Set new credentials userTokens = newTokens; // Update tokens process.env.ACCESS_TOKEN = newTokens.access_token process.env.REFRESH_TOKEN = newTokens.refresh_token console.log('Access token refreshed.'); } catch (error) { console.error('Error refreshing access token:', error); } } return userTokens } module.exports = { checkAndRefreshAccessToken };