# Failed to join meeting error code 3712

**URL:** <https://devforum.zoom.us/t/failed-to-join-meeting-error-code-3712/124197>\
**Category:** Web\
**Created:** [January 9, 2025, 4:03am UTC](https://devforum.zoom.us/t/failed-to-join-meeting-error-code-3712/124197 "2025-01-09T04:03:08Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![vitieubao83](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/vitieubao83/32/65310_2.png) [@vitieubao83](https://devforum.zoom.us/u/vitieubao83)\
**Post date:** [January 9, 2025, 4:03am UTC](https://devforum.zoom.us/t/failed-to-join-meeting-error-code-3712/124197/1 "2025-01-09T04:03:09Z")

</div>

**Meeting SDK Type and Version**  
3.11.0 version

**Description**

## Joining Meeting Timeout or Browser restriction

Signature is invalid

**Error?**

```auto
errorCode: 3712
errorMessage: "Signature is invalid."
method: "join"
result: "Invalid signature."
status: false

```

**Troubleshooting Routes**  
Please check github:[https://github.com/FindingNewWay/zoom](https://github.com/FindingNewWay/zoom)

**How To Reproduce**  
Step 1: I created Server-to-Server OAuth zoom app and have clientID = \_tPbvILqRACkUsmgX5\_s5A  
Step 2: Schedule new meeting zoom by call zoom API [https://us06web.zoom.us/j/84832162595?pwd=LyCHOZUgXHqrPO7Iixzw1gFl48TSDS.1](https://us06web.zoom.us/j/84832162595?pwd=LyCHOZUgXHqrPO7Iixzw1gFl48TSDS.1)

I got  
Meeting number: 84832162595  
Meeting password: 7tjL5X

Step 3: Make basecode64 signature to gen with client\_secret at back end using php

```auto
private function generateSignature($meetingNumber, $role)
    {
        $apiKey = env('ZOOM_CLIENT_ID');
        $apiSecret = env('ZOOM_CLIENT_SECRET');

        $payload = [
            'sdkKey' => $apiKey,
            'mn' => $meetingNumber,
            'role' => $role,
            'iat' => time(),
            'exp' => time() + 60 * 60 * 2, // Token valid for 2 hours
            'appKey' => $apiKey,
            'tokenExp' => time() + 60 * 60 * 2
        ];

        return JWT::encode($payload, $apiSecret, 'HS256');
    }

```

Here are my generated signature:  
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzZGtLZXkiOiJfdFBidklMcVJBQ2tVc21nWDVfczVBIiwibW4iOiI4NDgzMjE2MjU5NSIsInJvbGUiOjEsImlhdCI6MTczNjQwODc4NiwiZXhwIjoxNzM2NDE1OTg2LCJhcHBLZXkiOiJfdFBidklMcVJBQ2tVc21nWDVfczVBIiwidG9rZW5FeHAiOjE3MzY0MTU5ODZ9.SVlBbaooib9M3N6dD1B3A6AodC5WTty-s0LetjMHy8g

Step 4: Make front end blade file in Laravel using Meeting SDK

```auto
<!DOCTYPE html>
<html>
<head>
    <title>Join Zoom Meeting</title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <link type="text/css" rel="stylesheet" href="https://source.zoom.us/3.11.0/css/bootstrap.css" />
    <link type="text/css" rel="stylesheet" href="https://source.zoom.us/3.11.0/css/react-select.css" />
</head>
<body class="ReactModal__Body--open">
    <div id="zmmtg-root"></div>
    <div id="aria-notify-area"></div>
    <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>

    <script src="https://source.zoom.us/3.11.0/lib/vendor/react.min.js"></script>
    <script src="https://source.zoom.us/3.11.0/lib/vendor/react-dom.min.js"></script>
    <script src="https://source.zoom.us/3.11.0/lib/vendor/redux.min.js"></script>
    <script src="https://source.zoom.us/3.11.0/lib/vendor/redux-thunk.min.js"></script>
    <script src="https://source.zoom.us/3.11.0/lib/vendor/lodash.min.js"></script>
    <script src="https://source.zoom.us/zoom-meeting-3.11.0.min.js"></script>
    <script src="https://source.zoom.us/3.11.0/zoom-meeting-embedded-3.11.0.min.js"></script>
    <script>
        document.addEventListener('DOMContentLoaded', function () {
            // Ensure ZoomMtg is defined
            if (typeof ZoomMtg !== 'undefined') {
                ZoomMtg.setZoomJSLib('https://source.zoom.us/3.11.0/lib', '/av');
                ZoomMtg.preLoadWasm();
                ZoomMtg.prepareWebSDK();
                ZoomMtg.i18n.load('en-US');
                ZoomMtg.i18n.reload('en-US');

                const meetConfig = {
                    sdkKey: '{{ env('ZOOM_CLIENT_ID') }}',
                    signature: '{{ $signature }}',
                    meetingNumber: '{{ $meetingNumber }}',
                    userName: 'Guest',
                    passWord: '{{ $passWord }}',
                    leaveUrl: 'http://localhost:8000',
                    role: 0
                };

                console.log(meetConfig);

                ZoomMtg.init({
                    leaveUrl: meetConfig.leaveUrl,
                    success: function () {
                        ZoomMtg.join({
                            sdkKey: meetConfig.sdkKey,
                            signature: meetConfig.signature,
                            meetingNumber: meetConfig.meetingNumber,
                            passWord: meetConfig.passWord,
                            userName: meetConfig.userName,
                            success: function (res) {
                                console.log('join meeting success');
                            },
                            error: function (res) {
                                console.log(res);
                            }
                        });
                    },
                    error: function (res) {
                        console.log(res);
                    }
                });
            } else {
                console.error('ZoomMtg is not defined');
            }
        });
    </script>
</body>
</html>

```

Here is meeting configuration:

```auto
leaveUrl:"http://localhost:8000"
meetingNumber: "84832162595"
passWord: "7tjL5X"
role: 0
sdkKey: "_tPbvILqRACkUsmgX5_s5A"
signature: "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzZGtLZXkiOiJfdFBidklMcVJBQ2tVc21nWDVfczVBIiwibW4iOiI4NDgzMjE2MjU5NSIsInJvbGUiOjEsImlhdCI6MTczNjQwODc4NiwiZXhwIjoxNzM2NDE1OTg2LCJhcHBLZXkiOiJfdFBidklMcVJBQ2tVc21nWDVfczVBIiwidG9rZW5FeHAiOjE3MzY0MTU5ODZ9.SVlBbaooib9M3N6dD1B3A6AodC5WTty-s0LetjMHy8g"
userName: "Guest"

```

I got the issue that can not join meeting.

```auto
errorCode: 3712
errorMessage: "Signature is invalid."
method: "join"
result: "Invalid signature."
status: false

```

I event try to get signature generate from [https://developers.zoom.us/docs/meeting-sdk/auth/](https://developers.zoom.us/docs/meeting-sdk/auth/)

And hard code in blade file

```auto
                const meetConfig = {
                    sdkKey: '{{ env('ZOOM_CLIENT_ID') }}',
                    signature: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBLZXkiOiJfdFBidklMcVJBQ2tVc21nWDVfczVBIiwic2RrS2V5IjoiX3RQYnZJTHFSQUNrVXNtZ1g1X3M1QSIsIm1uIjoiODQ4MzIxNjI1OTUiLCJyb2xlIjoxLCJ0b2tlbkV4cCI6MTczNjQxMjY2NCwiaWF0IjoxNzM2NDA5MDY0LCJleHAiOjE3MzY0MTI2NjR9.tCe3tapKehkbmseXT_gnXFwPZSnlVQmq99N9Xeqneos',
                    meetingNumber: '{{ $meetingNumber }}',
                    userName: 'Guest',
                    passWord: '{{ $passWord }}',
                    leaveUrl: 'http://localhost:8000',
                    role: 0
                };

```

But the same issue occurred. Please support

Thanks

---

<div class="post-metadata">

**Author:** ![vitieubao83](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/vitieubao83/32/65310_2.png) [@vitieubao83](https://devforum.zoom.us/u/vitieubao83)\
**Post date:** [January 9, 2025, 8:06am UTC](https://devforum.zoom.us/t/failed-to-join-meeting-error-code-3712/124197/2 "2025-01-09T08:06:31Z")

</div>

@chunsiong.zoom

Please support

---

<div class="post-metadata">

**Author:** ![donte.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/donte.zoom/32/24412_2.png) [@donte.zoom](https://devforum.zoom.us/u/donte.zoom)\
**Post date:** [January 9, 2025, 3:08pm UTC](https://devforum.zoom.us/t/failed-to-join-meeting-error-code-3712/124197/3 "2025-01-09T15:08:34Z")

</div>

@vitieubao83 ,  
Thank you for posting in the Zoom Developer Forum. We actually have Youtube video you can reference for debugging your signature. Here is the link:

[![](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/8/6/862f511d17afc1136c639b9855a410f19c6fe6fc.jpeg "Decoding JWT for Authorization Errors for Zoom Meeting SDK") ](https://www.youtube.com/watch?v=F3l5RJoEKP4)

Take a look and let us know if you still are encounter an issue.

---

<div class="post-metadata">

**Author:** ![vitieubao83](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/vitieubao83/32/65310_2.png) [@vitieubao83](https://devforum.zoom.us/u/vitieubao83)\
**Post date:** [January 10, 2025, 7:43am UTC](https://devforum.zoom.us/t/failed-to-join-meeting-error-code-3712/124197/4 "2025-01-10T07:43:42Z")

</div>

For anyone got same issue,

Firstly, we have to make General app at Zoom Market place and turn on meeting SDK option.  
Secondly, we have generate JWT token to using Zoom Meeting SDK.  
Last, let use lastest Zoom Meeting SDK at front end

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/6/1/614bdd549b610bbaa46ff934617683a02bdaa03c.png) [@system](https://devforum.zoom.us/u/system)\
**Post date:** [February 9, 2025, 5:44pm UTC](https://devforum.zoom.us/t/failed-to-join-meeting-error-code-3712/124197/5 "2025-02-09T17:44:29Z")

</div>

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