Error: Joining meeting timeout. Signature is invalid

I’ll gone through other threads on the same topic but the solution is not working for me. Let me share the codes:
My generate zoom sdk signature: def generate_zoom_sdk_signature(meeting_number, role):
iat = int(time.time()) - 30
exp = iat + 60 * 60 * 2

client_id = os.getenv("ZOOM_CLIENT_ID_RYWECKN")
sdk_password = os.getenv("ZOOM_CLIENT_SECRET_RYWECKN")
# {
#   "appKey": ZOOM_MEETING_SDK_KEY_OR_CLIENT_ID,
#   "sdkKey": ZOOM_MEETING_SDK_KEY_OR_CLIENT_ID,
#   "mn": MEETING_NUMBER,
#   "role": ROLE,
#   "iat": 1646937553,
#   "exp": 1646944753,
#   "tokenExp": 1646944753
# }
payload={
    "appKey": client_id,
    "sdkKey": client_id,
    "mn": meeting_number,
    "role": role,
    "iat": iat,
    "exp": exp,
    "tokenExp": exp
    }

print("Payload: ", payload)
signature = jwt.encode(payload, sdk_password, algorithm="HS256")
print("Signature: ", signature)
return signature

What am i doing wrong? I am getting signature is valid. Also, I am able to successfully create webinars. But i am not able to join them. Not from 1 side or 0 side.

Hi @ibrahim.ryweck ,

This is most often an issue with time.

What solutions have you attempted and what threads have you referenced please? I want to avoid being redundant in helping with troubleshooting :slight_smile:

Can you please decode signature on jwt.io to confirm if its invalid?

It does say it is invalid but the problem is on my production server i am using JWT authentication & it is working fine. Since JWT has reached end of life, I have implemented OAuth. With it, I am able to:

  1. Create webinar
  2. Delete Webinar
  3. Update webinar

But as soon as I try to Join the webinar, I get that error I mentioned.

@ibrahim.ryweck

For Meeting SDK, you need to create a Meeting SDK App Type and use the ClientID and ClientSecret from there.

This is different from the OAuth App which you have created.

1 Like

Understood. Thanks. I’ll create a meeting app type and then continue. I’ll use this thread if any issue comes.

1 Like

Hi…i have done what you suggested. All the details now belong to a Meeting App type. I am again able to create, edit and delete the webinar.
But I am not able to join the webinar. This time I am getting Joining meeting timeout.

Fail to join the meeting. Error.

I have cross verified that I am putting proper timings.

I am able to join the webinar as the creator of the webinar: 1.
But now others are not able to join it: 0.

Here’s my script code:

 <script>
        // ZoomMtg.setZoomJSLib('https://source.zoom.us/2.11.0/lib', '/av')
        ZoomMtg.setZoomJSLib('../static/zoom/lib', '/av')

        ZoomMtg.preLoadWasm()
        ZoomMtg.prepareWebSDK()
        // loads language files, also passes any error messages to the ui
        ZoomMtg.i18n.load('en-US')
        ZoomMtg.i18n.reload('en-US')
        
        var sdkKey = '{{sdk_key}}'
        var meetingNumber = '{{meeting_number}}'
        var passWord = '{{password}}'
        var role = {{role}}
        var userName = '{{firstname}} {{lastname}}'
        var userEmail = '{{email}}'
        var zakToken = '{{zak_token}}'
        var leaveUrl = `
        {% if role == 1 %}
            /schedule-webinar
        {% else %}
            /webinars     
        {% endif %}
        `
        var signature = '{{signature}}'
        console.log(sdkKey)
        startMeeting(signature)

        function startMeeting(signature) {

            document.getElementById('zmmtg-root').style.display = 'block'

            ZoomMtg.init({
                leaveUrl: leaveUrl,
                success: (success) => {
                    console.log(success)
                    ZoomMtg.join({
                        signature: signature,
                        sdkKey: sdkKey,
                        meetingNumber: meetingNumber,
                        passWord: passWord,
                        userName: userName,
                        userEmail: userEmail,
                        zak: zakToken,
                        success: (success) => {
                            console.log(success)
                        },
                        error: (error) => {
                            console.log(error)
                        },
                    })
                },
                error: (error) => {
                    console.log(error)
                }
            })
        }
    </script>

Only the host should use the ZAK token when joining the meeting. everyone joining as a participant (0) should leave that out. They also need their own signature.

1 Like

Hi @ibrahim.ryweck , David is correct. Please fix and try again.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.