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