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

@mystery @jwiebe - What is the meeting/Webinar ID that you’re using?

@cinemed - Please refer to my response in this post, I have provided examples on how to do so with Windows and Mac, you would need to do the same with Linux -

Yes I referred to that. What I need an answer for is what “world time” is? I tried setting my timezone to “UTC” if that’s what you meant by “world time” and it didn’t change anything. What timezone are your servers using since there is no such thing as “world time”?

Yesterday app was not working (Timeout-error) but today is everything ok.
Thanks team.

@michael_p.zoom Hello, Meeting IDs were: 972 9690 4866, 916 1492 1969, 981 8708 1412

I was using a randomly generated ID, not my PMI.

Turns out that if you’re hosting a webinar, you cannot join using the Web SDK if you use the same email address as the host. Once I changed the email property to a different email, I had more success.

There was previously a planned new Web SDK release for today/tomorrow, but I’m no longer seeing that on the upcoming changes page. Has it been pushed back?

@michael_p.zoom also this meeting too

For those of you who are having success, what timezone are you guys using for your generate_signature() function?

I’m just using UTC, seems to be working.

Oh look what I found, an answer to my question about UTC Getting error 200 (No Permission) with new Webclient

Update your documentation Zoom. I found 3 errors in your sample code in the documentation that prevents people from running it too. missing commas and capitalization in variable names.

The timeout message is deceptive. This is the actual response I’m getting

{“status”:false,“errorCode”:200,“errorMessage”:“No permission”,“result”:null}

No permission, is that an error with my JWT? My signature? Something else? I’m using the php generate signature function found here: https://marketplace.zoom.us/docs/sdk/native-sdks/web/essential/signature and I set my timezone with date_default_timezone_set(‘UTC’);

I’m having the same issue as described here. I am using a ruby implementation of the signature generation, the relevant code is here:

Note that this signature generation worked as recently as version 1.7.5, a week or so after its release. But somewhere between then and now, this broke.

Today I added the - 30000 to the timestamp and upgraded the plugin to SDK v 1.7.7, but I still suspect that something isn’t right with the time now. So, can we have some clear instructions on whether the timestamp needs to be a specific timezone?

To clarify, using the sample web app, I can join the event, but using the Ruby implementation I can’t.

Update: @deepak2’s code in Invalid Signature with Sample Web App solved my Ruby issue. Thanks Deepak!

1 Like

In the interest of moving things along for everyone I’m posting my sample code (HTML& PHP). Just save this as a .php file and put it on a server that can run PHP to test it. This code is what SHOULD be in the documentation so people don’t even have to mess with installing a node package or piecing together something usable from the documentation for a CDN implementation. I’ve replaced all the parts (like api secret, meeting number, etc) that people need to replace with their own data with the word REMOVED. There are 5 instances, one being a password so note that if you use this and setup a meeting or webinar that has no password. Please post your results or let me know what I’ve done wrong here.

<?php

date_default_timezone_set('UTC');

if ($_SERVER['REQUEST_METHOD'] == 'POST') {

	$api_secret = 'REMOVED';

	function generate_signature($api_key, $api_secret, $meeting_number, $role) {
		$time = time() * 1000 - 30000; //time in milliseconds (or close enough)
		$data = base64_encode($api_key . $meeting_number . $time . $role);
		$hash = hash_hmac('sha256', $data, $api_secret, true);
		$_sig = $api_key . "." . $meeting_number . "." . $time . "." . $role . "." . base64_encode($hash);
		//return signature, url safe base64 encoded
		return rtrim(strtr(base64_encode($_sig), '+/', '-_'), '=');
	}

	$response = generate_signature($_POST['api_key'], $api_secret, $POST['meeting_number'], $POST['role']);
	
	header('Content-type: application/json');
	exit(json_encode($response));
}

?>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8" />
	<meta http-equiv="X-UA-Compatible" content="IE=edge" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />

	<title></title>

	<link type="text/css" rel="stylesheet" href="https://source.zoom.us/1.7.7/css/bootstrap.css" />
	<link type="text/css" rel="stylesheet" href="https://source.zoom.us/1.7.7/css/react-select.css" />

	<script src="https://source.zoom.us/1.7.7/lib/vendor/react.min.js"></script>
	<script src="https://source.zoom.us/1.7.7/lib/vendor/react-dom.min.js"></script>
	<script src="https://source.zoom.us/1.7.7/lib/vendor/redux.min.js"></script>
	<script src="https://source.zoom.us/1.7.7/lib/vendor/redux-thunk.min.js"></script>
	<script src="https://source.zoom.us/1.7.7/lib/vendor/jquery.min.js"></script>
	<script src="https://source.zoom.us/1.7.7/lib/vendor/lodash.min.js"></script>
</head>
<body>

<!-- must put this in the body -->
<script src="https://source.zoom.us/zoom-meeting-1.7.7.min.js"></script>

<script>
console.log('checkSystemRequirements');
console.log(JSON.stringify(ZoomMtg.checkSystemRequirements()));

ZoomMtg.setZoomJSLib('https://dmogdx0jrul3u.cloudfront.net/1.7.7/lib', '/av');
ZoomMtg.preLoadWasm();
ZoomMtg.prepareJssdk();

var meetConfig = {
	apiKey: 'REMOVED',	// ZOOM ESSENTIAL GUIDE IS MISSING THE COMMA AT THE END OF THE LINE
	meetingNumber: 'REMOVED ',
	leaveUrl: 'REMOVED',
	userName: 'Firstname Lastname',
	userEmail: 'firstname.lastname@yoursite.com', // required for webinar
	passWord: 'REMOVED', // if required
	role: 0 // 1 for host; 0 for attendee or webinar
};

$.ajax({
	type: 'POST',
	timeout: 30000,
	url: '<?php echo $_SERVER['PHP_SELF']; ?>',
	dataType: 'json',
	data: 'api_key=' + meetConfig.apiKey + '&meeting_number=' + meetConfig.meetingNumber + '&role=' + meetConfig.role
})
.done(function(data) {

	// for debug
	console.log('signature: ' + data);

	ZoomMtg.init({
		leaveUrl: meetConfig.leaveUrl,
		debug: true,
		success: function() {
			ZoomMtg.join({
				signature: data,
				apiKey: meetConfig.apiKey,
				meetingNumber: meetConfig.meetingNumber,
				userName: meetConfig.userName,
				// Email required for Webinars
				userEmail: meetConfig.userEmail,
				// password optional; set by Host
				passWord: meetConfig.passWord,	// ZOOM ESSENTIAL GUIDE HAS password: without the capital W AND IS MISSING THE COMMA AT THE END OF THE LINE
				error: function(res){
					console.log(res)
				}
			});
		},
		error: function() {
			console.log('init error');
		}
	});

});
</script>

</body>
</html>
2 Likes

Same result for me.

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

2 Likes

Yesterday (05.20.2020) worked fine
Now again “Your connection has timed out and you cannot join the meeting. Verify your network connectivity and try again.”
We are using sdk 1.7.7.
Testing on localhost, jwt should be fine, since everything worked yesterday

1 Like

I’m trying to start using Zoom Web SDK after running into customisation issues with the Ionic SDK. I implemented a simple test with the Angular sample app on Github and generating the signature with the PHP code from the Zoom Web SDK documentation, but then getting the error:

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

It seems this issue has been happening already last month. This does not seem very reliable.

I seem to be having this issue as well. Was working for me yesterday.

I am wondering if this has anything to do with Scheduled meetings that require registration?

Best,

Tyler

My browser does not seem to even make a request to any remote Zoom servers. So is this an issue with the latest version of the javascript library or with the signature generated by the PHP code, or am I missing something else?

Hi!

i have the same problem with webinar, meetings works fine
The error i get is

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

the version i’m using is zoom-meeting-1.7.7.min.js

           ZoomMtg.join(
                    {
                        meetingNumber: meetConfig.meetingNumber,
                        userName: meetConfig.userName,
                        signature: res.result,
                        apiKey: meetConfig.apiKey,
                        userEmail: 'ilseferman@gmail.com',
                        passWord: meetConfig.passWord,
                        
                        success() {
                            console.log('join meeting success');
                        },
                        error(res) {
                            console.log(res); 
                        }
                    }
                );

Try using an email other than your own to join the webinar. It doesn’t seem to work when you use your own email address.

1 Like

At least for me, that makes no difference. Neither did using UTC timestamp. I also tried using the “Zoom Web SDK Sample Signature Node.js” for the signature creation. No luck.

2 Likes

Finally after a long 5 days of try I got the solution. It’s worked super for me. Excited to share my solution with you. If it doesn’t break the community guideline feel free to e-mail me arhossainim@gmail.com Because it’s a long solution I would love to send you complete code instead of describing it here.

1 Like