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.

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