I am getting an error, Error: Request failed with status code 401 { code: 124, message: 'Invalid access token.' }

const express = require(‘express’);
const axios = require(‘axios’);
const jwt = require(‘jsonwebtoken’);
require(‘dotenv’).config({ path: ‘./zoom.env’ });

var router = express.Router();

const generateJWT = () => {
const exp = Math.floor(Date.now() / 1000) + (60 * 60);
console.log(‘exp:’, new Date(exp * 1000).toISOString());
const payload = {
iss: process.env.ZOOM_API_KEY,
exp: exp,
};

// Sign the token with your API secret
const token = jwt.sign(payload, process.env.ZOOM_API_SECRET, { algorithm: ‘HS256’ });

// Log the token for debugging
console.log(‘Generated JWT:’, token);

return token;
};

const handleError = (error, res) => {
console.error(Error: ${error.message});
if (error.response) {
console.error(error.response.data);
console.error(error.response.status);
console.error(error.response.headers);
}
res.status(500).send(‘An error occurred’);
};

// Create Meeting
router.post(‘/createMeeting’, async function(req, res) {
const jwtToken = generateJWT();
try {
const userId = req.body.id;
const response = await axios.post(https://api.zoom.us/v2/users/${userId}/meetings, {
topic: req.body.topic,
type: 2, // Scheduled meeting
start_time: req.body.startTime, // “2024-03-31T12:00:00Z”
duration: req.body.duration, // in minutes
}, {
headers: {
‘Authorization’: Bearer ${jwtToken},
‘Content-Type’: ‘application/json’
}
});
console.log(Status: ${response.status}, Body: ${JSON.stringify(response.data)});
res.json(response.data);
} catch (error) {
handleError(error, res);
}
});

// List Meetings
router.get(‘/listMeeting’, async function(req, res) {
const jwtToken = generateJWT();
try {
const userId = req.query.userId;
const response = await axios.get(https://api.zoom.us/v2/users/${userId}/meetings, {
headers: {
‘Authorization’: Bearer ${jwtToken},
}
});
console.log(Status: ${response.status}, Body: ${JSON.stringify(response.data)});
res.json(response.data);
} catch (error) {
handleError(error, res);
}
});

// Update Meeting
router.post(‘/updateMeeting’, async function(req, res) {
const jwtToken = generateJWT();
try {
const meetingId = req.body.mId;
const response = await axios.patch(https://api.zoom.us/v2/meetings/${meetingId}, {
topic: req.body.topic,
type: req.body.type,
}, {
headers: {
‘Authorization’: Bearer ${jwtToken},
‘Content-Type’: ‘application/json’
}
});

console.log(`Status: ${response.status}, Body: ${JSON.stringify(response.data)}`);
res.json(response.data);

} catch (error) {
handleError(error, res);
}
});

// Get Meeting Details
router.get(‘/getMeeting’, async function(req, res) {
const jwtToken = generateJWT();
try {
const meetingId = req.query.meetingId;

const response = await axios.get(https://api.zoom.us/v2/meetings/${meetingId}, {
headers: {
‘Authorization’: Bearer ${jwtToken},
}
});

console.log(`Status: ${response.status}, Body: ${JSON.stringify(response.data)}`);
res.json(response.data);

} catch (error) {
handleError(error, res);
}
});

module.exports = router;