Hi,
Below code I have followed in Javascript but i got signature invalid :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Security-Policy" content="base-uri 'self'; default-src 'self'; worker-src blob:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://zoom.us *.zoom.us blob:; img-src 'self' *.zoom.us data:; media-src 'self' .zoom.us; font-src 'self' source.zoom.us data:; connect-src 'self' 'unsafe-eval' https://*.zoom.us wss://*.zoom.us;">
<title>Your Title</title>
<!-- Dependencies for client view and component view -->
<script src="https://source.zoom.us/3.1.0/lib/vendor/react.min.js"></script>
<script src="https://source.zoom.us/3.1.0/lib/vendor/react-dom.min.js"></script>
<script src="https://source.zoom.us/3.1.0/lib/vendor/redux.min.js"></script>
<script src="https://source.zoom.us/3.1.0/lib/vendor/redux-thunk.min.js"></script>
<script src="https://source.zoom.us/3.1.0/lib/vendor/lodash.min.js"></script>
<!-- Choose between the client view or component view: -->
<!-- CDN for client view -->
<script src="https://source.zoom.us/zoom-meeting-3.1.0.min.js"></script>
<!-- CDN for component view -->
<script src="https://source.zoom.us/zoom-meeting-embedded-3.1.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jsrsasign/10.1.0/jsrsasign-all-min.js"></script>
</head>
<body class="ReactModal__Body--open">
<!-- added on import -->
<div id="zmmtg-root"></div>
<div id="aria-notify-area"></div>
<!-- added on meeting init -->
<div class="ReactModalPortal"></div>
<div class="ReactModalPortal"></div>
<div class="ReactModalPortal"></div>
<div class="ReactModalPortal"></div>
<div class="global-pop-up-box"></div>
<div class="sharer-controlbar-container sharer-controlbar-container--hidden"></div>
</body>
<script>
function generateSignature(key, secret, meetingNumber, role) {
const now = Math.floor(Date.now() / 1000); // Unix timestamp in seconds
console.log(now);
const iat = now - 30; // Issued at timestamp 30 seconds earlier
const exp = now + (60 * 60 * 2); // Expiry timestamp: current timestamp + 2 hours
const tokenExp = exp; // Token expiry same as JWT expiry for simplicity
const oHeader = { alg: 'HS256', typ: 'JWT' };
const oPayload = {
appKey: key,
sdkKey: key,
mn: meetingNumber,
role: role,
iat: iat,
exp: exp,
tokenExp: tokenExp
};
const sHeader = JSON.stringify(oHeader);
const sPayload = JSON.stringify(oPayload);
const signatureInput = KJUR.jws.JWS.sign(null, sHeader, sPayload, secret);
return signatureInput;
}
// You need to provide values for Zoom meeting SDK key, SDK secret, meeting number, and role
const zoomMeetingSDKKey = 'xxxxxxxxxxxxxxxxx';
const zoomMeetingSDKSecret = 'xxxxxxxxxxxxxxxxxxx';
const meetingNumber = 87871111111;
const passWord = '11xxx1';
const userName = 'xxx';
const role = 0;
const leaveUrl = 'https://test.com';
const signature = generateSignature(zoomMeetingSDKKey, zoomMeetingSDKSecret, meetingNumber, role);
ZoomMtg.init({
leaveUrl: leaveUrl,
success: (success) => {
ZoomMtg.join({
sdkKey: zoomMeetingSDKKey,
signature: signature, // role in SDK signature needs to be 0
meetingNumber: meetingNumber,
passWord: passWord,
userName: userName,
success: (success) => {
console.log(success)
},
error: (error) => {
console.log(error)
}
})
},
error: (error) => {
console.log(error)
}
})
console.log(signature);
</script>
</html>
Thanks for your attention. I’m looking forward to your reply.