Sample code for 30+ languages & platforms
PHP ActiveX

Zoom API - Create JWT to Authenticate API Requests

See more Zoom Examples

Creates a JWT for the Zoom API.

Chilkat PHP ActiveX Downloads

PHP ActiveX
<?php

$success = 0;

// 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...
$apiKey = 'o9rw6Gq0RnqlkfaSqtCMOA';
$apiSecret = 'UslmE23Kjh7at9z3If1xAHEyLmPDNxvxQrjR';

// Create a JWT to authenticate Zoom API requests.
$jwt = new COM("Chilkat.Jwt");

$jose = new COM("Chilkat.JsonObject");
$success = $jose->UpdateString('alg','HS256');
$success = $jose->UpdateString('typ','JWT');

// Build claims to look like this:
// {"aud":null,"iss":"o9rw6Gq0RnqlkfaSqtCMOA","exp":1627651762,"iat":1627646363}
$claims = new COM("Chilkat.JsonObject");
$success = $claims->UpdateString('iss',$apiKey);
$success = $claims->UpdateNull('aud');

// Set the timestamp of when the JWT was created to now.
$curDateTime = $jwt->GenNumericDate(0);
$success = $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)
$oneMonth = 3600 * 24 * 30;
$success = $claims->AddIntAt(-1,'exp',$curDateTime + $oneMonth);

// Produce the smallest possible JWT:
$jwt->AutoCompact = 1;

$strJwt = $jwt->createJwt($jose->emit(),$claims->emit(),$apiSecret);

print $strJwt . "\n";

// 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

$http = new COM("Chilkat.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;

$sbResponseBody = new COM("Chilkat.StringBuilder");
$success = $http->QuickGetSb('https://api.zoom.us/v2/users?status=active&page_size=30&page_number=1',$sbResponseBody);
if ($success == 0) {
    print $http->LastErrorText . "\n";
    exit;
}

$jResp = new COM("Chilkat.JsonObject");
$jResp->LoadSb($sbResponseBody);
$jResp->EmitCompact = 0;

print 'Response Body:' . "\n";
print $jResp->emit() . "\n";

$respStatusCode = $http->LastStatus;
print 'Response Status Code = ' . $respStatusCode . "\n";
if ($respStatusCode >= 400) {
    print 'Response Header:' . "\n";
    print $http->LastHeader . "\n";
    print 'Failed.' . "\n";
    exit;
}

// 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

$page_count = $jResp->IntOf('page_count');
$page_number = $jResp->IntOf('page_number');
$page_size = $jResp->IntOf('page_size');
$total_records = $jResp->IntOf('total_records');
$i = 0;
$count_i = $jResp->SizeOfArray('users');
while ($i < $count_i) {
    $jResp->I = $i;
    $id = $jResp->stringOf('users[i].id');
    $first_name = $jResp->stringOf('users[i].first_name');
    $last_name = $jResp->stringOf('users[i].last_name');
    $email = $jResp->stringOf('users[i].email');
    $v_type = $jResp->IntOf('users[i].type');
    $pmi = $jResp->IntOf('users[i].pmi');
    $timezone = $jResp->stringOf('users[i].timezone');
    $verified = $jResp->IntOf('users[i].verified');
    $created_at = $jResp->stringOf('users[i].created_at');
    $last_login_time = $jResp->stringOf('users[i].last_login_time');
    $language = $jResp->stringOf('users[i].language');
    $phone_number = $jResp->stringOf('users[i].phone_number');
    $status = $jResp->stringOf('users[i].status');
    $role_id = $jResp->stringOf('users[i].role_id');
    $i = $i + 1;
}


?>