Hi
I can’t seem to solve this invalid signature issue. I use the ZoomClient API to successfully create a scheduled meeting. I am trying to use the function below to create a signature to start the meeting, but I keep getting an invalid signature error. I’m using the web (component view). My credentials are Server-To-Server OAuth. Please help.
function generateSignature(key, secret, meetingNumber, role) {
const iat = Math.floor(Date.now() / 1000) - 30;
const exp = iat + 60 * 60 * 2;
const oHeader = {
alg: "HS256",
typ: "JWT"
};
const oPayload = {
appKey: key,
sdkKey: key,
meetingNumber: meetingNumber,
role: role,
iat: iat,
exp: exp
};
// Define the HMACSHA256 function inline
function HMACSHA256(key, message) {
const hash = CryptoJS.HmacSHA256(message, key);
return CryptoJS.enc.Base64.stringify(hash);
}
// Create the encoded header and payload strings
const encodedHeader = btoa(JSON.stringify(oHeader));
const encodedPayload = btoa(JSON.stringify(oPayload));
// Generate the signature using HMAC SHA-256
const signature = HMACSHA256(secret, encodedHeader + "." + encodedPayload);
return signature;
}
async function initializeZoomMeeting() {
const client = ZoomMtgEmbedded.createClient();
const meetingSDKElement = document.getElementById(‘meetingSDKElement’);
const sdkKey = getCookie(“sdkKeyCookie”);
const secret = getCookie(“secretCookie”);
const mn = getCookie(“meetingIDCookie”)
client.init({ zoomAppRoot: meetingSDKElement, language: ‘en-US’ });
const generatedSignature = generateSignature(
sdkKey,
secret,
mn, // Meeting Number
1 // Role (0 for a host, 1 for a participant)
);
try {
client.join({
sdkKey: clientID,
signature: generatedSignature, // role in SDK signature needs to be 1
meetingNumber: getCookie("meetingIDCookie"),
password: meetingPassword,
userName: email,
zak: zakToken
})
} catch (error) {
console.error('Error:', error);
}
}
// Initialize Zoom Meeting on page load.
initializeZoomMeeting();