Zoom Web Meeting SDK has stopped working since last month: Joining Meeting Timeout. Fail to join the meeting

Description
@gianni.zoom

Hi, we has been requested by Zoom review team to post our problem in the devforum to solve it. We have almost exactly the problem described in this thread: https://devforum.zoom.us/t/sporadic-joining-meeting-timeout-fail-to-join-meeting-no-error-detail-error-callback-not-called/93507.

The only difference is that for us, the error is not random and sporadic, it’s happening every time a external Zoom account try to join the meeting as host. However, there is no problem when we use our own account and managed sub-accounts, the problem is only with external accounts.

From 2022 until the last month, we had a published OAuth app in the marketplace for the API calls to create / delete meeting and ZAK retrieval, and an unpublished SDK app for an integrated Client View to connect the created meeting as host / attendees.

That was the way of doing this flow in 2022, a standalone OAuth app that need to be in the marketplace, and a standalone SDK app that don’t need to be in the marketplace.

That setup was working well until a month ago, when external users started to see the same problem of that thread. When the host join in the Client View to the meeting created by the API with the signature and ZAK, that dialog prompts: Joining meeting timeout. Fail to join the meeting. As same as that thread, there is no error code presented, or error callbacks fired.

When it stopped working, we saw that the old SDK app now it’s called Meeting SDK app, and thought that maybe we need to update it. In the developer marketplace when accessing the Meeting SDK app, a dialog was prompted to us requesting to update it to the new version with OAuth 2.0 integrated. So now we have both, SDK Key & SDK Secret, and Client ID & Client secret, all in the same Meeting SDK app.

When we saw this, we thought that the problem was that the old setup (published OAuth app + unpublished SDK app) now need to be done only with the Meeting SDK app, that integrates both functionalities. So we adapt all our keys and integration to the new Meeting SDK app, and start the review process to publish to the marketplace.

However, the same problem is happening with the Meeting SDK to the review team (review team uses accounts that can bypass the external account limit for unpublished apps, so that it’s not the problem), and we need to resolve the issue before publishing the Meeting SDK and remove the old OAuth app from the marketplace.

We are a health app, and have hundred of users and thousand of patients affected by this issue, and we have hospitals too, so is critical to resolve it. In the meantime we are including their accounts as sub-accounts inside our developer account, but this is patch for the situation, not a real fix.

As we didn’t changed anything before it stopped working, and the problem is exactly the same no matter the old published OAuth+SDK or the new Meeting SDK (is working well with own account, not for external accounts), we have started to think that Zoom has changed something in the SDK / Meeting SDK that is conflicting with external accounts, and we cannot resolve it from our side.

According to Zoom documentation, we still need to use the SDK Key & SDK Secret in the signature generation. If we try to use the new Client ID / Client Secret in the Meeting SDK, a error is received with invalid signature and cannot be used with or without our own account, so it’s obvious that we need to use the SDK key & SDK Secret.

We really need support with this.

Browser Console Error
No errors shown. Only dialog: Joining Meeting Timeout. Fail to join the meeting.

By inspecting the networking, the only error thing we see is the last message received by the WebSocket connection that Zoom opens:

{
   "body": {
      "conID": "DC4824C5-8C21-080E-2CF2-F598250D9D8B",
      "error_desc": "FailedFromWeb, RESULT_UNKOWN_ERROR, 200",
      "mn": "75320454820",
      "res": 200,
      "svcUrl": "zoomiad20624714233rwg.iad.zoom.us"
   },
   "evt": 4098,
   "seq": 1
}

Which Web Meeting SDK version?
Latest, 2.16.0. Same happens with 2.9.0 and 2.15.2.

Meeting SDK Code Snippets
To generate SDK Signature:

let iat = Math.round(new Date().getTime() / 1000) - 60,
	expirationTime = iat + (60 * 60 * 24);
const oHeader = { alg: 'HS256', typ: 'JWT' };
const oPayload = {
	sdkKey: SDK_PUBLIC_KEY,
	mn: MEETING_NUMBER_FROM_API_CALL,
	role: ROLE_1_FOR_HOST_0_FOR_ATTENDEE,
	iat: iat,
	exp: expirationTime,
	appKey: SDK_PUBLIC_KEY,
	tokenExp: expirationTime
};
const sHeader = JSON.stringify(oHeader);
const sPayload = JSON.stringify(oPayload);
const signature = KJUR.jws.JWS.sign('HS256', sHeader, sPayload, SDK_SECRET_KEY);

To create Meeting SDK:

axios.post('https://api.zoom.us/v2/users/me/meetings', {
	"topic": "Optonet",
	"type": 1,
	"password": MEETING_PASSWORD, //max length 10 chars and only alphanumeric and @ - _ *
	"default_password": false,
	"settings": {
		"host_video": true,
		"participant_video": true,
		"cn_meeting": false,
		"in_meeting": false,
		"mute_upon_entry": false,
		"watermark": false,
		"use_pmi": false,
		"approval_type": 2,
		"join_before_host": false,
		"jbh_time": 0,
		"audio": "voip",
		"auto_recording": "none",
		"close_registration": false,
		"waiting_room": false,
		"contact_name": USER_NAME,
		"contact_email": USER_EMAIL,
		"registrants_email_notification": false,
		"registrants_confirmation_email": false,
		"meeting_authentication": false,
		"additional_data_center_regions": "US",
		"show_share_button": false,
		"allow_multiple_devices": true,
		"encryption_type": "enhanced_encryption",
		"focus_mode": true,
		"enforce_login": false
	}
}, {
	timeout: 5000,
	responseType: 'json',
	headers: {
		'Authorization': 'Bearer ' + ACCESS_TOKEN,
		'Content-Type': 'application/json'
	}
});

To retrieve Zak token:

axios.get('https://api.zoom.us/v2/users/me/zak', {
	timeout: 5000,
	responseType: 'json',
	headers: {
		'Authorization': 'Bearer ' + ACCESS_TOKEN
	}
});

To init Zoom and Join as host from Client View:

const initAndJoinZoom = (signatureResponse)=>{
	ZoomMtg.init({
		debug: false,
		showMeetingHeader: true,
		disableInvite: false,
		disableCallOut: true,
		disableRecord: false,
		disableJoinAudio: false,
		audioPanelAlwaysOpen: false,
		showPureSharingContent: false,
		isSupportAV: true,
		isSupportChat: true,
		isSupportQA: true,
		isSupportPolling: true,
		isSupportBreakout: true,
		isSupportCC: true,
		screenShare: true,
		videoDrag: false,
		sharingMode: 'both',
		videoHeader: true,
		isLockBottom: true,
		isSupportNonverbal: true,
		isShowJoiningErrorDialog: true,
		disablePreview: true,
		enableFullHD: true,
		enableHD: true,
		leaveUrl: location.origin + '/?zoomLeave=true',
		disableCORP: false,
		meetingInfo: [
			'topic',
			'host',
			'participant',
			'dc',
			'enctype'
		],
		disableVoIP: false,
		disableReport: false,
		success: (success) => {
			console.log(success);
			ZoomMtg.join({
				signature: signatureResponse.zoomWebSignature,
				sdkKey: signatureResponse.sdkKey,
				zak: signatureResponse.zak,
				userEmail: '',
				meetingNumber: signatureResponse.meetingNumber,
				userName: USER_NAME,
				passWord: signatureResponse.meetingPwd,
				success: (success) => {
					console.log(success);
					//Rest of code
				},
				error: (error) => {
					console.log(error);
					if(error && error.errorCode == 3000)
						this.props.actions.showSnackbar('Your Zoom account have reached the concurrent meetings limit. You need to finish your other meetings before starting a new one, or upgrade your Zoom subscription to increase your limits.');
					this.endMeeting();
				}
			});
		},
		error: (error) => {
			console.log(error)
			this.endMeeting();
		}
	});
}

To Reproduce

  1. Authorize external Zoom user account with OAuth.
  2. Create the meeting and retrieve the user ZAK token with the above API calls. Then response to frontend with the created meeting number and password, user ZAK token, sdk signature and public sdk key.
  3. Init and join zoom meeting from Client Client view with the server response of step 2 by calling the above initAndJoinZoom function.
  4. Error dialog is shown for external accounts: Joining Meeting Timeout. Fail to join the meeting.

No matter how much times we press retry, same dialog.

Screenshots
The same dialog image as the thread link commented at the start (I cannot upload / put more than 2 links).

Troubleshooting Routes
We have tried everything from our side: decreasing IAT time by 30, 60, 300 seconds and 1 day, increasing exp time from the iat time by 1800 seconds and 1 day, removing tokenExp and appKey from signature, try with https://github.com/zoom/meetingsdk-web-sample , nothing works.

Device:

  • Device: Gigabyte Z390 Aorus Pro, i7-8700K, Nvidia RTX 3090, 32GB RAM DDR4
  • OS: Windows 10 x64
  • Browser: Chrome 116.0.5845.142, Chrome Canary 119.0.5994.0, Firefox 115.0.2

@optonetltd , I might have some idea what issue you are experiencing.

  • The Meeting SDK App Type in your marketplace.zoom.us, is it published? ← I’m guessing this is not published at the moment
  • You are using either Meeting SDK App Type’s (ClientID + ClientSecret) or (SDKKey + SDKSecret) to sign your JWT Signature right?
  • The error occurs only when you are joining external meetings

Recently there was a change in policy, which requires Meeting SDK to be published before it join external meetings. This change in policy was communicated via email to developer’s account. Each developer has a different deadline for implementation.

The course of action is to publish your Meeting SDK App.

Please tag me in your response, and let me know if this is a fair assumption or otherwise.

@chunsiong.zoom Thank you for your fast response.

Not published yet, it’s submitted and currently in review process.

  • You are using either Meeting SDK App Type’s (ClientID + ClientSecret) or (SDKKey + SDKSecret) to sign your JWT Signature right?

SDKKey + SDKSecret

We tried ClientID + ClientSecret to check what happens, but that generates a invalid signature error.

  • The error occurs only when you are joining external meetings

I think is more accurate to say that the error only occurs with external Zoom accounts, and it works with our own developer account and managed sub-accounts.

The meeting is not really external for the user who join as host, as he is the owner of the meeting (we are creating that meeting on his behalf).

The flow is:

A Optonet user wants to be able to do video-consultation with their patients. He goes to our web app UI and start the Zoom OAuth authorization process, so he is redirected to the Zoom marketplace OAuth url and authorize our Meeting SDK app with his own Zoom account, to let us manage meetings on his behalf.

Then, inside our web app, when he wants to start a video-consultation with a patient, we create a meeting with his preauthorized Zoom account via API (he is the owner of the meeting), and then we joins him to that meeting as Host using ZAK token and Client View.

Finally, after the user has joined as host and shares a link with a patient, the patient joins as attendee in another computer / Client View.

Recently there was a change in policy, which requires Meeting SDK to be published before it join external meetings. This change in policy was communicated via email to developer’s account.

We suspected that when the problem started some weeks ago only for external accounts and saw the new Meeting SDK with OAuth in the developer panel, but we never has been notified of this changes. We received other emails like the JWT migration, SDK min version etc, but not the one you refers.

The big problem here is that we are stucked in the submission review. The Zoom review team (that can bypass the external account block for non published apps with their special Zoom accounts) has the same “Joining Meeting Timeout. Fail to join the meeting.” dialog that our users has with their external accounts in the old “published OAuth + unpublished SDK” integration, so we cannot complete the review processs.

@optonetltd

The meeting is not really external for the user who join as host, as he is the owner of the meeting (we are creating that meeting on his behalf).

We define external users as users who are not in the same account as the Meeting SDK.

We suspected that when the problem started some weeks ago only for external accounts and saw the new Meeting SDK with OAuth in the developer panel, but we never has been notified of this changes. We received other emails like the JWT migration, SDK min version etc, but not the one you refers.

This should be from the roll out of additional requirement to publish your meeting SDK app to start / join external user’s meeting. This has been communicated directly to the developer’s email address with a specific deadline. My apologies if you did not receive that email.

The big problem here is that we are stucked in the submission review. The Zoom review team (that can bypass the external account block for non published apps with their special Zoom accounts) has the same “Joining Meeting Timeout. Fail to join the meeting.” dialog that our users has with their external accounts in the old “published OAuth + unpublished SDK” integration, so we cannot complete the review processs.

Is the Zoom review team, reviewing your OAuth app or Meeting SDK app? You need to publish (review) your Meeting SDK app.

@chunsiong.zoom

Is the Zoom review team, reviewing your OAuth app or Meeting SDK app? You need to publish (review) your Meeting SDK app.

The OAuth app is already in the marketplace. Zoom is reviewing our Meeting SDK app.

Same problem on our web app. Via the SDK it is no longer possible to start a meeting (we also always get the message “Joining Meeting Timeout. Fail to join the meeting.”), whereas if I start the meeting from Zoom and then use the SDK from our web app to join as a guest, the join works. No error in the console, just an error on websocket:
{"body":{"conID":"BC4CFCFC-A159-6869-2C90-D16FCB514F99","error_desc":"FailedFromWeb, RESULT_UNKOWN_ERROR, 200","mn":"85336234084","res":200,"svcUrl":"zoomams15912421215rwg.ams.zoom.us"},"evt":4098,"seq":1}

Our app is already published on the store ( https://marketplace.zoom.us/apps/ScVYEtd9TTWWCLoLNtdpLg), but has been stuck on a review for 2 months after changes to the title and description of the store info.

I would like to point out that the app has always worked without any problems, it just stopped working all of a sudden. Several customers have contacted us saying that they cannot use it.

Any help is welcome.

@chunsiong.zoom any idea what the error might be due to?

@morphcastzoom ,

are you joining meetings which are from external account?
could you share a sample of your JWT token as well?

@chunsiong.zoom please direct message @morphcastzoom so they can send a copy of their token.

1 Like

Hello Ms. Gianni,

Any update? The review team is waiting for a solution.

Thank you for your time,

Optonet team.

Hi @optonetltd , were you working with @chunsiong.zoom via private message?

Chun, did you resolve with @morphcastzoom?

Hi @gianni.zoom,

The last response he send was 23 days ago in this thread. No response received since then.

As we seen responses to the messages from MorphCast requesting him tokens, we supposed that Zoom was working on this, but doesn’t seem the case.

What we need to do?

Any thing you need to investigate the issue (special keys to try, tokens, debug mode, network HAR, etc), just told us.

@gianni.zoom @optonetltd ,

I’ve worked with morphcast via PM for their issue.

@optonetltd, is your application still pending approval? I’m PM you for additional details about your app.

1 Like

@optonetltd ,

I’m sharing some details here, for future references.

  1. The Meeting SDK app needs to be published (and approved), if not you won’t be able to join external meetings. Even if it is create on behalf of another user/host/owner, the SDK can only join external meeting if and only if the Meeting SDK app has been published.
  2. (ClientID and ClientSecret) and (SDK Key and SDK Secret) from Meeting SDK App type is support from 2.9.7 and above. Earlier versions of Web SDK would require (SDK Key and SDK Secret) for authentication token generation.
1 Like

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