"Not support start meeting via tokens" getting error when starting meeting with zak token of a licensed user

Format Your New Topic as Follows:

API Endpoint(s) and/or Zoom API Event(s)
https://api.zoom.us/v2/users/{userId}/token/?type=zak

Description
I am using the above url to get the ZAK token for to start the meeting. But whenever I am sending the token I am geeting the following error.

Error?
Joining meeting timeout
Token Error.

I am usiing Web SDK 2.7.0
Integrated in Angular 11
In the backend I am using the NodeJS

Please help me with this.
Thank you.

@business1,

Welcome to the Developer Forum – I am happy to help. First, can you share the snippet of code that leverages the ZAK token to start the meeting?

Hello,
Thank you for your reply.
Here is the code snippet where I am using the ZAK token to start the meeting.

joinMeeting(signature, zakToken: string = null): void {
        const zoomJoinObj = {
            signature,
            meetingNumber: this.meetingNumber,
            userName: this.userName,
            sdkKey: this.apiKey,
            passWord: this.passWord,
            zak: null
        };
        if (zakToken) {
            zoomJoinObj.zak = zakToken;
        }
        ZoomMtg.join({
            ...zoomJoinObj,
            success: (success) => {...

Also I have checked the token, it is generating from the ZOOM API. I am performing the following to get the ZAK token

  1. Get the JWT token using Server to Server OAuth
  2. Using that JWT, I am sending the request to the Zak Token API to get the ZAk token for a User (Licensed) attached to the main account.
  3. And after that returning the ZAK token to the Angular end and using that in the above code snippet.

Also do note that If I do not use the ZAK token I can be able to start the meeting, but as because of the business account allows only two meeting to held simultaniously, I have attached two more user and added them as licensed user, and trying to start the meeting using one of those account’s ZAK token.
Please guide me if I am missing something here.

Thank you

Thanks for sharing the snippet, @business1 ! It looks like you only shared how you defined the zoomJoinObj and omitted how it is used in the function. Can you share the whole function? Also, have you verified that the zak token returned is actually being used as expected?

Hello,

joinMeeting(signature, zakToken: string = null): void {
        const zoomJoinObj = {
            signature,
            meetingNumber: this.meetingNumber,
            userName: this.userName,
            sdkKey: this.apiKey,
            passWord: this.passWord,
            zak: null
        };
        if (zakToken) {
            zoomJoinObj.zak = zakToken;
        }

      // Here the zoomJoinObj is being destrucred and used in the ZoomMtg.join function

        ZoomMtg.join({
            ...zoomJoinObj,
            success: (success) => {
                if (this.storage.isStudent()) {
                    this.cookieService.setCookie('_zm_std_joined', '1', 1);
                    // TODO log
                } else {
                   // TODO log
                }
                this.cookieService.removeCookie('mi');
                this.cookieService.removeCookie('mp');
            },
            error: (error) => {
                if (this.storage.isMaestro()) {
                    // maestro
                   // TODO log
                } else {
                    // Student
                  // TODO log
                }
            }
        });
    }

And yes I have checked the ZAK token generation, also I have used a custom generated token returned from the API and hard coded the value in the zoomJoinObj object as well. But same result.

@business1 ,

That’s strange! Have you tested using the zak token with our sample app? I am not able to reproduce that behavior on my end. Can you test with our sample and share the result?

Yes I have tested it with the ZOOM angular sample app provided by the ZOOM.
I have used the same code as describe in that.
One thing, I have attached two account into the main business account, and assigned two license to those accounts.
And for the meeting I am doing the following:-

  1. Creating a ZOOM meeting using the zoom meeting API using the credentials from the business account.
  2. When starting the meeting, I am usung the licensed user attached to the zoom main account to get the zak token.
  3. With that zak token I am trying to start the meeting.
    But the error persist.
    Do note that If i start the meeting from that attached account it self from the zoom app installed in my phone, I can be able to start the meeting.

Please help me in this.
Thank you.

1 Like

I am also facing the same issue, I am using Zoom Meeting SDK JavaScript sample and it say “Not support start meeting via tokens” Here is my start meeting function

function startMeeting(signature) {

  document.getElementById('zmmtg-root').style.display = 'block'

  ZoomMtg.init({
    leaveUrl: leaveUrl,
    success: (success) => {
      console.log(success)
      console.log(meetingNumber, passWord, userName, userEmail, registrantToken, zakToken)
      ZoomMtg.join({
        signature: signature,
        sdkKey: sdkKey,
        meetingNumber: meetingNumber,
        passWord: passWord,
        userName: userName,
        userEmail: userEmail,
        tk: registrantToken,
        zak: zakToken,
        success: (success) => {
          console.log(success)
        },
        error: (error) => {
          console.log(error)
        },
      })
    },
    error: (error) => {
      console.log(error)
    }
  })
}

can you solved this error?