Joining meeting timeout when used in webSDK 2.9.0

I try to migrate from webSDK 1.9.0 to webSDK 2.9.0.

The following steps I have tried:

  1. create an SDK type app and get its appKey, appSecret
  2. created a meeting and get its meeting ID: 84914954427
  3. I tried the sample: GitHub - zoom/meetingsdk-web-sample: Zoom Meeting SDK Web Sample App and I can join the meeting in browser.
  4. I replaced meeting.htm and other JS files with new version files.
  5. In the meetingsdk-web-sample, it create signature in JS with the function: generateSDKSignature. My server is PHP, I have to try the same way in my PHP as suggested:

function generate_signature($meetingNumber, $role, $sdkKey, $sdkSecret)
{
// $tz_set = date_default_timezone_get();
// date_default_timezone_set(“UTC”);
$iat = time() - 5 * 60;
$exp = $iat + 60 * 60 * 2;
$token_payload = [
‘sdkKey’ => $sdkKey,
‘mn’ => $meetingNumber,
‘role’ => $role,
‘iat’ => $iat,
‘exp’ => $exp,
‘appKey’ => $sdkKey,
‘tokenExp’ => $exp
];
// ‘appKey’=> $sdkKey,
$this->load->library(‘JWT’);
$jwt = $this->jwt->encode($token_payload, $sdkSecret, ‘HS256’);
// date_default_timezone_set($tz_set);

return $jwt;

}
}

I got a URL in PHP:
Zoom WebSDK"

It got the error message:

Joining meeting timeout.

Your connection has timed out and you cannot join the meeting. Verify your network connectivity and try again.

I got a URL in meetingsdk-web-sample:
http://127.0.0.1:9998/meeting.html?name=VHJpYWwgU3R1ZGVudA%3D%3D&mn=[REDACTED]“&email=&pwd=1234&role=0&lang=en-US&signature=[REDACTED]”

It works

Hi @hanbridge01 ,

could you try to remove
appkey" and “tokenExp” from your generate_signature method?

'appKey’ => $sdkKey,
‘tokenExp’ => $exp

There is a possibility these 2 additional fields are causing the “joining meeting timeout” error

I have removed the two fileds as following:
function generate_signature($meetingNumber, $role, $sdkKey, $sdkSecret)
{
// $tz_set = date_default_timezone_get();
// date_default_timezone_set(“UTC”);
$iat = time() - 30;
$exp = $iat + 60 * 60 * 2;
$token_payload = [
‘sdkKey’ => $sdkKey,
‘mn’ => $meetingNumber,
‘role’ => $role,
‘iat’ => $iat,
‘exp’ => $exp
];
// ‘appKey’ => $sdkKey,
// ‘tokenExp’ => $exp
$this->load->library(‘JWT’);
$jwt = $this->jwt->encode($token_payload, $sdkSecret, ‘HS256’);
// date_default_timezone_set($tz_set);

return $jwt;

}
}
I also tried different values(30, 60, 300) in this sentence $iat = time() - 30;

But the result is same


The object value for localJsonpCallback1:
{
“status”: true,
“errorCode”: 0,
“result”: {
“passWord”: “1234”,
“zappInfo”: “{"showAppWhenDisable":false,"launchRefreshUrl":"https://us02web.zoom.us/zapps/meeting/84914954427/launcher/token\“,\“clientId\”:\“vgq4KppeTSuucqC8ckGAYA\”,\“ctx\”:\“DOoIZEzHCu-lUzp11AAABAAAALC_lA5GDlUkvNdA4yXT9VhuDI_c\”,\“disableCode\”:0,\“indexUrl\”:\“https://marketplace.zoom.us/zapps/meeting/84914954427/launcher\”,\“appUrl\”:\“https://mpapis.zoom.us\”,\“marketplaceUrl\”:\“https://marketplace.zoom.us\”,\“detailUrl\”:\“https://marketplace.zoom.us/zapps/meeting/84914954427/detail/{clientId}\”,\“deviceNonce\”:\”\“,\“isEnable\”:true}”,
“fileTransfer”: “{"isEnableFileTransferEncrypted":false,"shareInChat":[{"tcType":1,"icon":"","name":"Dropbox","type":"dropbox"},{"tcType":2,"icon":"","name":"OneDrive","type":"onedrive"},{"tcType":2,"icon":"","name":"Google Drive","type":"gdrive"},{"tcType":2,"icon":"","name":"Box","type":"box"},{"tcType":2,"icon":"","name":"Microsoft SharePoint","type":"sharepoint"}],"shareInMeeting":[{"tcType":1,"icon":"","name":"Dropbox","type":"dropbox"},{"tcType":2,"icon":"","name":"OneDrive","type":"onedrive"},{"tcType":2,"icon":"","name":"Google Drive","type":"gdrive"},{"tcType":2,"icon":"","name":"Box","type":"box"},{"tcType":2,"icon":"","name":"Microsoft SharePoint","type":"sharepoint"}],"fileDownloadPromptIgnoreList":".264,.3dm,.3ds,.3gp,.3mf,.aac,.abr,.acr,.aep,.aia,.aif,.amr,.apa,.asc,.asm,.avi,.bak,.bcf,.bin,.bmp,.c,.c3p,.c4d,.cc,.cer,.cfg,.cif,.cpp,.cr2,.cr3,.crt,.css,.csv,.cur,.dat,.doc,.docx,.dpx,.dwg,.dxf,.edb,.eps,.ev3,.ex4,.f3d,.fbx,.flp,.flv,.fodp,.fods,.fodt,.gan,.ggb,.gif,.glb,.h,.har,.hex,.hwp,.ico,.ics,.ini,.ino,.java,.jmx,.jpe,.jpg,.key,.keynote,.kmz,.kra,.lic,.log,.lxf,.m,.m3u,.m4a,.m4v,.max,.mdp,.mfa,.mid,.mkv,.mom,.mov,.mp3,.mp4,.mpe,.mpg,.mpp,.mq4,.msg,.nef,.numbers,.obj,.odp,.ods,.odt,.ogg,.one,.ora,.otf,.pages,.par,.pcm,.pdb,.pdf,.pdn,.pem,.pfd,.pfx,.pgn,.php,.pka,.pkt,.pln,.png,.pps,.ppt,.pptx,.psc,.psd,.pub,.py,.rar,.rdf,.ret,.rfa,.rmd,.rpt,.rte,.rtf,.rvt,.rw2,.sav,.sb2,.sb3,.set,.sib,.skp,.slx,.spv,.sql,.srt,.std,.stl,.stp,.svg,.tag,.tar,.tex,.tgz,.tif,.tmp,.tns,.ttf,.txt,.vcf,.vob,.vwx,.wav,.wma,.wmv,.wpl,.wrf,.xcf,.xdw,.xls,.xlsx,.xml,.xps,.xqf,.yml,.zip,.7z,.gz,.xmind,.json,.mm,.hpp,.crash,.diff,.conf,.rm,.rmvb,.phps,.go,.rs,.cs,.sln,.config,.cache,.resx,.rc,.res,.gitignore,.htaccess,.lib,.md,.mak,.jpeg","ignore":".264,.3dm,.3ds,.3gp,.3mf,.aac,.abr,.acr,.aep,.aia,.aif,.amr,.apa,.asc,.asm,.avi,.bak,.bcf,.bin,.bmp,.c,.c3p,.c4d,.cc,.cer,.cfg,.cif,.cpp,.cr2,.cr3,.crt,.css,.csv,.cur,.dat,.doc,.docx,.dpx,.dwg,.dxf,.edb,.eps,.ev3,.ex4,.f3d,.fbx,.flp,.flv,.fodp,.fods,.fodt,.gan,.ggb,.gif,.glb,.h,.har,.hex,.hwp,.ico,.ics,.ini,.ino,.java,.jmx,.jpe,.jpg,.key,.keynote,.kmz,.kra,.lic,.log,.lxf,.m,.m3u,.m4a,.m4v,.max,.mdp,.mfa,.mid,.mkv,.mom,.mov,.mp3,.mp4,.mpe,.mpg,.mpp,.mq4,.msg,.nef,.numbers,.obj,.odp,.ods,.odt,.ogg,.one,.ora,.otf,.pages,.par,.pcm,.pdb,.pdf,.pdn,.pem,.pfd,.pfx,.pgn,.php,.pka,.pkt,.pln,.png,.pps,.ppt,.pptx,.psc,.psd,.pub,.py,.rar,.rdf,.ret,.rfa,.rmd,.rpt,.rte,.rtf,.rvt,.rw2,.sav,.sb2,.sb3,.set,.sib,.skp,.slx,.spv,.sql,.srt,.std,.stl,.stp,.svg,.tag,.tar,.tex,.tgz,.tif,.tmp,.tns,.ttf,.txt,.vcf,.vob,.vwx,.wav,.wma,.wmv,.wpl,.wrf,.xcf,.xdw,.xls,.xlsx,.xml,.xps,.xqf,.yml,.zip,.7z,.gz,.xmind,.json,.mm,.hpp,.crash,.diff,.conf,.rm,.rmvb,.phps,.go,.rs,.cs,.sln,.config,.cache,.resx,.rc,.res,.gitignore,.htaccess,.lib,.md,.mak,.jpeg","shareInMeetingUrl":"https://us02web.zoom.us/launch/sim/%s/%s\“,\“shareInChatUrl\”:\“https://us02web.zoom.us/launch/sic/%s/%s\”,\“isEnable\”:true}”,
“auth”: “TfqZHnZFzUBaQKHuMftHbhirG0nNNYftjP5SlGTPNuM”,
“isWebinar”: “0”,
“track_auth”: “PdQbha8MS4Gnupx4cvouQ_cUZ_99_1HEvGOcXcwkQNI”,
“sign”: " [REDACTED]””,
“encryptedRWC”: “[REDACTED]”",
“mid”: “5UZtPBHqSKed+B72VkFRaQ==”,
“meetingTopic”: “Zoom Meeting”,
“tid”: “v=2.0;clid=us02;rid=WEB_e0899faa7a80d61e14526cfdb574436e”,
“websdkClientFeatureOptions”: “12011”,
“ccUrl”: “”,
“recordingDisclaimer”: “{"isEnableRecordingReminder":true}”,
“encryptedGEORWC”: “[{"dl":0,"rwc":"rwchk.hk.zoom.us","dc":"HK","rwcToken":"tR5v0p-VbvRY5YFoXgAxcHQXNZq2jpyEbXfKfPN5xZ8"},{"dl":0,"rwc":"rwcty.ty.zoom.us","dc":"TY","rwcToken":"svYbM8W5TjRCEEtSOxHrifB-rVSajJAeMnvT40DRGHY"},{"dl":0,"rwc":"rwcsg.cloud.zoom.us","dc":"AP","rwcToken":"DS5_ZkSVM7e1p0R8SzTaLaSKrTCWLC7tAtp6jzld-hA"},{"dl":1500,"rwc":"rwcsc.sc.zoom.us","dc":"US","rwcToken":"dOWJB7F7cW5nbex2LECuN2xjes_3BAM6m-tIdrjC3_Y"},{"dl":1500,"rwc":"rwcdv.dv.zoom.us","dc":"US","rwcToken":"ihiZBmFSSdt-QbriV497KWGufJKCsedtuUPCd9Vf2fE"},{"dl":1500,"rwc":"rwcny.ny.zoom.us","dc":"US","rwcToken":"ZnDaJCSeaJS8AujQX0bk9d3gtC-xbEElMqYi0wkG51k"}]”,
“liveTranscription”: “{"isEnableTranslatedCaptions":false,"isHostLockSpeakingLanguage":false,"isEnableAutomatedCaptions":false}”,
“meetingInterpretationInfo”: “{"isEnableLanguageInterpretation":false}”,
“toll_numbers_json”: “”,
“wrInfo”: “{"defaultMobileScreen":"","defaultScreen":""}”,
“meetingOptions”: “[REDACTED]”,
“zmk”: “[REDACTED]”,
“isSupportQA”: “false”,
“liveStreamInfo”: “{"isEnabledLiveStream":false}”,
“call_out_country_json”: “[{"code":"+1","name":"United States","id":"US"}]”,
“signInterpreterInfo”: “{"isEnable":false}”,
“h323Password”: “1234”,
“giftOptions”: “{"billedType":0,"upgradeUrl":"","meetingCount":-1}”,
“rwc_agent_endpoint”: “rwcprod.zoom.us”,
“allowClientStopAutoCMR”: “0”,
“hideInvite”: “false”,
“isSimuliveWebinar”: false,
“recordingDisclaimerForRecorder”: “{"isEnableRecordingReminder":false}”,
“isDisableGVForLowEndDevice”: false,
“fileServerDomain”: “file.zoom.us”,
“userName”: “Trial Student”,
“invite_email”: “Marina Teacher is inviting you to a scheduled Zoom meeting.\r\n\r\nTopic: Zoom Meeting\r\nTime: Nov 22, 2022 07:30 AM Beijing, Shanghai\r\n\r\nJoin Zoom Meeting\r\nhttps://us02web.zoom.us/j/84914954427?pwd=T0VBNnlPLzRMaWxETE5EUUFiRzRsQT09\r\n\r\nMeeting ID: 849 1495 4427\r\nPasscode: 1234\r\n\r\n”,
“isOriginHost”: “false”,
“meetingNumber”: “84914954427”,
“formate_confno”: “849 1495 4427”,
“optionVideoHost”: “true”,
“support_call_out”: “0”,
“optionAudioType”: “voip”,
“rwc_agent_endpoint_backup”: “rwcsc.sc.zoom.us;rwcprod.tj.zoom.com.cn;rwcsg.cloud.zoom.us;rwcvn.vn.zoom.us;rwctr.tr.zoom.us;rwcmb.cloud.zoom.us;rwchy.hy.zoom.us;rwcam.am.zoom.us;rwcsp.cloud.zoom.us;rwcty.ty.zoom.us;rwcdv.dv.zoom.us;rwcfr.fr.zoom.us;rwchk.hk.zoom.us;rwcny.ny.zoom.us;rwcsy.sy.zoom.us;rwcct1.cloud.zoom.us”,
“location”: “JP”,
“integrationDomain”: “https://applications.zoom.us”,
“can_recording”: “1”,
“optionVideoParticipants”: “true”,
“ts”: “1669100741215”
}
}

@hanbridge01 ,

Could I trouble you to check the if all the references to 1.9.0 are successfully pointed to 2.9.0?
From the error which you are getting, there is a possibility there are still some references pointing to version 1.9.0

The following files I got from chrome debug tool.

This is my meeting.html:
https://cloud.myfanshu.com/meeting.html

!DOCTYPE html>

<head>
    <title>Zoom WebSDK</title>
    <meta charset="utf-8" />
    <link type="text/css" rel="stylesheet" href="https://source.zoom.us/2.9.0/css/bootstrap.css" />
    <link type="text/css" rel="stylesheet" href="https://source.zoom.us/2.9.0/css/react-select.css" />
    <meta name="format-detection" content="telephone=no">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <meta http-equiv="origin-trial" content="">
</head>

<body>
    <script src="https://source.zoom.us/2.9.0/lib/vendor/react.min.js"></script>
    <script src="https://source.zoom.us/2.9.0/lib/vendor/react-dom.min.js"></script>
    <script src="https://source.zoom.us/2.9.0/lib/vendor/redux.min.js"></script>
    <script src="https://source.zoom.us/2.9.0/lib/vendor/redux-thunk.min.js"></script>
    <script src="https://source.zoom.us/2.9.0/lib/vendor/lodash.min.js"></script>
    <script src="https://source.zoom.us/zoom-meeting-2.9.0.min.js"></script>
    <script src="meeting/tool.js"></script>
    <script src="meeting/vconsole.min.js"></script>
    <script src="meeting/meeting.js"></script>

    <script>

    </script>
</body>

</html>

I use the CDN version, so only three JS files are loaded from my server:
https://cloud.myfanshu.com/meeting/tool.js
https://cloud.myfanshu.com/meeting/vconsole.min.js
https://cloud.myfanshu.com/meeting/meeting.js

I have checked no problem is found. Where can you find out that there may be some references to 1.9.0 ?

In my JWT encode, I have a header:
{
“typ”: “jwt”,
“alg”: “HS256”
}

I compare it with you sample result and find two differences and changed it to:
{
“alg”: “HS256”,
“typ”: “JWT”,
}

It works!

The same jwt library and worked well in 1.9.0. It’s the problem of compatibility in 2.9.0. It take me 2 days and feel sorry about it.

Thank you for your help!

2 Likes

@hanbridge01,

Glad to hear you were able to get it working. Should you have any questions, please feel free to ask.