Sample code for 30+ languages & platforms
React Native

Zoom API - Create JWT to Authenticate API Requests

See more Zoom Examples

Creates a JWT for the Zoom API.

Chilkat React Native Downloads

React Native
import { Http, JsonObject, Jwt, StringBuilder } from '@chilkat/react-native'

async function chilkatExample() {
  // This example requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  // Use your API key and secret here...
  const apiKey = 'o9rw6Gq0RnqlkfaSqtCMOA';
  const apiSecret = 'UslmE23Kjh7at9z3If1xAHEyLmPDNxvxQrjR';

  // Create a JWT to authenticate Zoom API requests.
  const jwt = new Jwt();

  const jose = new JsonObject();
  jose.updateString('alg', 'HS256');
  jose.updateString('typ', 'JWT');

  // Build claims to look like this:
  // {"aud":null,"iss":"o9rw6Gq0RnqlkfaSqtCMOA","exp":1627651762,"iat":1627646363}
  const claims = new JsonObject();
  claims.updateString('iss', apiKey);
  claims.updateNull('aud');

  // Set the timestamp of when the JWT was created to now.
  const curDateTime = jwt.genNumericDate(0);
  claims.addIntAt(-1, 'iat', curDateTime);

  // Set the timestamp defining an expiration time (end time) for the token
  // to be now + 1 month(3600 * 24 * 30 seconds)
  const oneMonth = 3600 * 24 * 30;
  claims.addIntAt(-1, 'exp', curDateTime + oneMonth);

  // Produce the smallest possible JWT:
  jwt.autoCompact = true;

  const strJwt = jwt.createJwt(jose.emit(), claims.emit(), apiSecret);

  console.log(strJwt);

  // Let's test the JWT to by sending the following request:

  // curl --request GET \
  //   --url 'https://api.zoom.us/v2/users?status=active&page_size=30&page_number=1' \
  //   --header 'authorization: Bearer { your_token }' \
  //   --header 'content-type: application/json

  const http = new Http();

  // Implements the following CURL command:

  // curl --request GET \
  //   --url 'https://api.zoom.us/v2/users?status=active&page_size=30&page_number=1' \
  //   --header 'authorization: Bearer { your_token }' \
  //   --header 'content-type: application/json

  // Use the following online tool to generate HTTP code from a CURL command
  // Convert a cURL Command to HTTP Source Code

  http.setRequestHeader('content-type', 'application/json');
  // Adds the "Authorization: Bearer { your_token }" header.
  http.authToken = strJwt;

  const sbResponseBody = new StringBuilder();
  try {
    await http.quickGetSbAsync('https://api.zoom.us/v2/users?status=active&page_size=30&page_number=1', sbResponseBody);
  } catch {
    console.log(http.lastErrorText);
    return;
  }

  const jResp = new JsonObject();
  jResp.loadSb(sbResponseBody);
  jResp.emitCompact = false;

  console.log('Response Body:');
  console.log(jResp.emit());

  const respStatusCode = http.lastStatus;
  console.log(`Response Status Code = ${respStatusCode}`);
  if (respStatusCode >= 400) {
    console.log('Response Header:');
    console.log(http.lastHeader);
    console.log('Failed.');
    return;
  }

  // Sample output:

  // {
  //   "page_count": 1,
  //   "page_number": 1,
  //   "page_size": 30,
  //   "total_records": 1,
  //   "users": [
  //     {
  //       "id": "s8uAiMJiRmS_-eu1yOhKlg",
  //       "first_name": "Joe",
  //       "last_name": "Example",
  //       "email": "joe@example.com",
  //       "type": 1,
  //       "pmi": 5224934114,
  //       "timezone": "America/Chicago",
  //       "verified": 1,
  //       "created_at": "2021-07-30T11:56:37Z",
  //       "last_login_time": "2021-07-30T11:56:37Z",
  //       "language": "en-US",
  //       "phone_number": "",
  //       "status": "active",
  //       "role_id": "0"
  //     }
  //   ]
  // }

  // Sample code for parsing the JSON response...
  // Use the following online tool to generate parsing code from sample JSON:
  // Generate Parsing Code from JSON

  let id = '';
  let firstName = '';
  let lastName = '';
  let email = '';
  let vType = 0;
  let pmi = 0;
  let timezone = '';
  let verified = 0;
  let createdAt = '';
  let lastLoginTime = '';
  let language = '';
  let phoneNumber = '';
  let status = '';
  let roleId = '';

  const pageCount = jResp.intOf('page_count');
  const pageNumber = jResp.intOf('page_number');
  const pageSize = jResp.intOf('page_size');
  const totalRecords = jResp.intOf('total_records');
  let i = 0;
  const countI = jResp.sizeOfArray('users');
  while (i < countI) {
    jResp.i = i;
    id = jResp.stringOf('users[i].id');
    firstName = jResp.stringOf('users[i].first_name');
    lastName = jResp.stringOf('users[i].last_name');
    email = jResp.stringOf('users[i].email');
    vType = jResp.intOf('users[i].type');
    pmi = jResp.intOf('users[i].pmi');
    timezone = jResp.stringOf('users[i].timezone');
    verified = jResp.intOf('users[i].verified');
    createdAt = jResp.stringOf('users[i].created_at');
    lastLoginTime = jResp.stringOf('users[i].last_login_time');
    language = jResp.stringOf('users[i].language');
    phoneNumber = jResp.stringOf('users[i].phone_number');
    status = jResp.stringOf('users[i].status');
    roleId = jResp.stringOf('users[i].role_id');
    i++;
  }
}