Join meeting timeout. No permission

I am trying to join a zoom meeting that I have created. While joining, it shows a popup - Join Meeting timeout: No permission. I think the problem is that I am generating the wrong signature. Can someone help me out with this?

{
method: ‘join’,
status: ‘false’,
result: ‘No permission’,
errorMessage: ‘No permssion.’,
errorCode: 3713
}

I am working with SDK version 2.4.5

import React from ‘react’
import { useEffect } from ‘react’;
import { ZoomMtg } from ‘@zoomus/websdk’;
const KJUR = require(‘jsrsasign’)

var apiKey = ‘[REDACTED]’
var apiSecret = ‘[REDACTED]’
var meetingNumber = ‘[REDACTED]’
var leaveUrl = ‘http://localhost:3000’;
var userName = ‘WebSDK’
var userEmail = ‘test@gmail.com’;
var passWord = ‘y5gjZB’;
var signature = ‘’
var role = 0;

function generateSignature(sdkKey, sdkSecret, meetingNumber, role) {

const iat = Math.round((new Date().getTime() - 30000) / 1000)
const exp = iat + 60 * 60 * 2
const oHeader = { alg: ‘HS256’, typ: ‘JWT’ }

const oPayload = {
sdkKey: sdkKey,
mn: meetingNumber,
role: role,
iat: iat,
exp: exp,
appKey: sdkKey,
tokenExp: iat + 60 * 60 * 2
}

const sHeader = JSON.stringify(oHeader)
const sPayload = JSON.stringify(oPayload)
const sdkJWT = KJUR.jws.JWS.sign(‘HS256’, sHeader, sPayload, sdkSecret)
return sdkJWT
}
signature = generateSignature(apiKey, apiSecret, meetingNumber, role);
console.log(signature)

const Zoom = () => {

useEffect(() => {
    showZoomDiv();
    ZoomMtg.setZoomJSLib('https://source.zoom.us/2.4.5/lib', '/av');
    ZoomMtg.preLoadWasm();
    ZoomMtg.prepareJssdk();
    initiateMeet();
}, [])

const showZoomDiv = () => {
    document.getElementById("zmmtg-root").style.display = "block";
}

const initiateMeet = () => {
    ZoomMtg.init({
        leaveUrl: leaveUrl,
        isSupportAV: true,
        success: (success) => {
            console.log(success)

            ZoomMtg.join({
                signature: signature,
                meetingNumber: meetingNumber,
                userName: userName,
                apiKey: apiKey,
                userEmail: userEmail,
                passWord: passWord,
                success: (success) => {
                    console.log(success)
                },
                error: (error) => {
                    console.log(error)
                }
            })
        },
        error: (error) => {
            console.log(error)
        }
    })
}

return (
    <div className='App'>Zoom</div>
)

}

export default Zoom

Screenshots

Device (please complete the following information):

  • Device: HP Pavillon Laptop
  • OS: Windows 10
  • Browser: Chrome
  • Browser Version 102.0.5005.115

Hi, @chaitanyasondur.

Welcome to the Developer Forum. Based on the snippet, it looks like the signature is being generated correctly. As a sanity check, have you validated the signature is correct? If not, you can do so at JWT.io. Please see this post for guidance on debugging your signature here :

Thank you so much for your quick response @donte.zoom. I debugged the signature and the payload fields were correct according to me. But it shows an “Invalid Signature” error at the bottom. I have also attached the snap. Kindly help me out with this. Thanks.

[REDACTED PII }

@chaitanyasondur,

Thanks for sharing that screenshot, @chaitanyasondur! To align with security best practices, we ask that you remove any Personal Identifiable Information when posting in the Forum. That aside, based on the screenshot, the signature looks correct. May I ask which SDK are you working with? (i.e, React, VUE, Vanilla JS) ? In the meantime, I’d next generate a signature using the Zoom Meeting SDK Sample Signature Node.js app and compare your function signature output against the Sample App.

Thank you @donte.zoom. I am working with the React SDK.

@chaitanyasondur.

You’re welcome! Have you tried to generate a signature using the Zoom Meeting SDK Sample Signature Node.js app and compare your function signature output against the Sample App ?

Hello @donte.zoom, I tried using meetingsdk-sample-signature-node.js. The signature I received was almost identical to the previous one. The role, SDK key, app key, mn were all the same.

While using the server to generate the signature, I got a different error: Uncaught TypeError: Cannot read properties of undefined (reading 'toString') at A (bundle.js:35671:68).

The error occurred in signature: "function" !== typeof e.signature ? e.signature.toString() : e.signature, in bundle.js file.

@chaitanyasondur ,

That error appears to be in your bundle.js file. It seems the root cause is with your implementation. As a sanity check, I’d recommend performing an isolated test using the Sample SDK
and meetingsdk-sample-signature-node.js outside of your codebase? This will help to isolate what the root cause of the error you are receiving in your implementation.

hi,
for your signature you use the SDK JWT, but for join you use JWT - two differnet app types

wrong property:

ZoomMtg.join({
   signature: signature,
   apiKey: key,

correct property:

ZoomMtg.join({
   signature: signature,
   sdkKey: key,

line 73:

Jürgen