Error Code 3099 and 3051

Description
I am encountering while using the Zoom SDK API. Specifically, I am experiencing the following error codes:

Browser Console Error
Error Code 3099:

{
    "status": false,
    "errorCode": 3099,
    "errorMessage": "0:https://zoom.us/meeting/register/tJAud-moqTwjG9BFiE04jcHduoVpRxIq7Z_d"
}
Error Code 3051:
{
    "status": false,
    "errorCode": 3051,
    "errorMessage": "eyJhbGciOiJIUzI1NiJ9.CWYHFtpzC2EhqVRsIucHR9sE4hd8OoOjfqI6YyM3fHY"
}

These errors occur consistently when attempting to join a meeting from a student account [Non-Licensed Account] in Frontend . The URLs provided in the error messages are generated when creating a meeting with approval_type set to 0 and 1. While the host is able to join the meeting without any issues, students encounter these errors.
Additionally, when students attempt to join the meeting, they are able to sign in but are subsequently met with a blank screen.

Below is the JSON used for creating the meeting:
JSON:


{
  "agenda": "My Meeting",
  "duration": 45,
  "start_time": "2024-08-02T16:20:00",
  "timezone": "Asia/Kolkata",
  "auto_recording": "cloud",
  "join_before_host": true,
  "settings": {
    "approval_type": 0
  },
  "type": 2,
  "meeting_authentication": true
}

For the host’s SDK configuration, we are using both the SDK token and ZAK token. However, for students, we are using only the SDK token in the config API .
Could you please provide guidance on resolving these issues.

Which Web Meeting SDK version?
@zoom/meetingsdk”: “3.6.0”

Code Snippet of student SDK


// user sdk config
router.post("/:userId/sdk/host/config", async (req, res) => {
  const { headerConfig } = req;
  const { userId } = req.params;
  const { meetingId, role } = req.body;
  const key = process.env.ZOOM_WEB_SDK_CLINET_ID;
  const secret = process.env.ZOOM_WEB_SDK_CLIENT_SECRET;

  try {
    
    const meetingRequest = await axios.get(
      `${ZOOM_API_BASE_URL}/meetings/${meetingId}`,
      headerConfig
    );

    const iat = Math.round(new Date().getTime() / 1000) - 30;
    const exp = iat + 60 * 60 * 3;
    const oHeader = { alg: "HS256", typ: "JWT" };

    const oPayload = {
      sdkKey: key,
      appKey: key,
      mn: meetingId,
      role: role,
      iat: iat,
      exp: exp,
      tokenExp: exp,
    };
    const sHeader = JSON.stringify(oHeader);
    const sPayload = JSON.stringify(oPayload);
    const sdkJWT = KJUR.jws.JWS.sign("HS256", sHeader, sPayload, secret);
    const userId = "zoom.license1@narayana.digital";
    const request = await axios.get(
      `${ZOOM_API_BASE_URL}/users/${userId}/token?${qs.stringify({
        type: "zak",
        ttl: 10800,
      })}`,
      headerConfig
    );
    const resp = res.json({
      sdkToken: sdkJWT,
      zakToken: request.data?.token,
      config_payload: {
        meetingNumber: meetingRequest.data?.id,
        passWord: meetingRequest.data?.password,
        userName: "Zoom License User",
        userEmail: userId,
      },
    });
    return resp;
  } catch (err) {
    console.log("Error", err);
    return errorHandler(err, res, "Error fetching users");
  }
});

Device

  • Browser: Chrome

Thankyou

@zoom.license1 since you have created a meeting with this key value, the student has to authenticate before they can join.

“meeting_authentication”: true

This would also mean that you need to retrieve the student’s ZAK token to authenticate them before they are able to join the meeting.

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