I am using Zoom api to refresh access token if expired. I have tried everything but its always gives me invalid_grant(Invalid Token!) error. I also tried this but problem seem unsolvable. The token I generate is never used but still it gives me invalid_grant error. Here is my code
const zoomAuth = Buffer.from(
process.env.ZOOM_CLIENT_ID + ':' + process.env.ZOOM_CLIENT_SECRET
).toString('base64');
const fetchZoomToken = async (user) => {
try {
let todayDate = new Date();
if (todayDate < new Date(user.zoom_expires_in)) {
return {
success: true,
status: 200,
access_token: user.zoom_access_token,
};
}
const zoomRes = await axios.post(
`https://zoom.us/oauth/token?refresh_token=${user.zoom_refresh_token}&grant_type=refresh_token`,
null,
{
headers: {
Authorization: `Basic ${zoomAuth}`,
'content-type': 'application/x-www-form-urlencoded',
},
}
);
console.log(zoomRes.data);
if (!zoomRes.ok)
return {
success: false,
status: 401,
message: 'Could not connect with Zoom',
};
if (zoomRes.data.error) {
return {
success: false,
status: 401,
message: zoomRes.data.reason,
};
}
const doc = await User.findByIdAndUpdate(user._id, {
zoom_expires_in: new Date(todayDate.getTime() + zoomRes.data.expires_in * 1000),
zoom_access_token: zoomRes.data.access_token,
zoom_refresh_token: zoomRes.data.refresh_token,
});
return {
success: true,
status: 200,
access_token: zoomRes.data.access_token,
};
} catch (err) {
console.log(err);
return {
success: false,
status: 500,
message: 'Something went wrong',
};
}
};