Failed to join meeting error code 3712

Meeting SDK Type and Version
3.11.0 version

Description

Joining Meeting Timeout or Browser restriction

Signature is invalid

Error?

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

Troubleshooting Routes
Please check github: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

I got
Meeting number: 84832162595
Meeting password: 7tjL5X

Step 3: Make basecode64 signature to gen with client_secret at back end using php

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

<!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:

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.

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/

And hard code in blade file

                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

@chunsiong.zoom

Please support

@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:

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

1 Like

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

1 Like

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