Sample code for 30+ languages & platforms
Visual FoxPro

Zoom API - Create JWT to Authenticate API Requests

See more Zoom Examples

Creates a JWT for the Zoom API.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL lcApiKey
LOCAL lcApiSecret
LOCAL loJwt
LOCAL loJose
LOCAL loClaims
LOCAL lnCurDateTime
LOCAL lnOneMonth
LOCAL lcStrJwt
LOCAL loHttp
LOCAL loSbResponseBody
LOCAL loJResp
LOCAL lnRespStatusCode
LOCAL lcId
LOCAL lcFirst_name
LOCAL lcLast_name
LOCAL lcEmail
LOCAL lnV_type
LOCAL lnPmi
LOCAL lcTimezone
LOCAL lnVerified
LOCAL lcCreated_at
LOCAL lcLast_login_time
LOCAL lcLanguage
LOCAL lcPhone_number
LOCAL lcStatus
LOCAL lcRole_id
LOCAL lnPage_count
LOCAL lnPage_number
LOCAL lnPage_size
LOCAL lnTotal_records
LOCAL i
LOCAL lnCount_i

lnSuccess = 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...
lcApiKey = "o9rw6Gq0RnqlkfaSqtCMOA"
lcApiSecret = "UslmE23Kjh7at9z3If1xAHEyLmPDNxvxQrjR"

* Create a JWT to authenticate Zoom API requests.
loJwt = CreateObject('Chilkat.Jwt')

loJose = CreateObject('Chilkat.JsonObject')
lnSuccess = loJose.UpdateString("alg","HS256")
lnSuccess = loJose.UpdateString("typ","JWT")

* Build claims to look like this:
* {"aud":null,"iss":"o9rw6Gq0RnqlkfaSqtCMOA","exp":1627651762,"iat":1627646363}
loClaims = CreateObject('Chilkat.JsonObject')
lnSuccess = loClaims.UpdateString("iss",lcApiKey)
lnSuccess = loClaims.UpdateNull("aud")

* Set the timestamp of when the JWT was created to now.
lnCurDateTime = loJwt.GenNumericDate(0)
lnSuccess = loClaims.AddIntAt(-1,"iat",lnCurDateTime)

* Set the timestamp defining an expiration time (end time) for the token
* to be now + 1 month(3600 * 24 * 30 seconds)
lnOneMonth = 3600 * 24 * 30
lnSuccess = loClaims.AddIntAt(-1,"exp",lnCurDateTime + lnOneMonth)

* Produce the smallest possible JWT:
loJwt.AutoCompact = 1

lcStrJwt = loJwt.CreateJwt(loJose.Emit(),loClaims.Emit(),lcApiSecret)

? lcStrJwt

* 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

loHttp = CreateObject('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

loHttp.SetRequestHeader("content-type","application/json")
* Adds the "Authorization: Bearer { your_token }" header.
loHttp.AuthToken = lcStrJwt

loSbResponseBody = CreateObject('Chilkat.StringBuilder')
lnSuccess = loHttp.QuickGetSb("https://api.zoom.us/v2/users?status=active&page_size=30&page_number=1",loSbResponseBody)
IF (lnSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loJwt
    RELEASE loJose
    RELEASE loClaims
    RELEASE loHttp
    RELEASE loSbResponseBody
    CANCEL
ENDIF

loJResp = CreateObject('Chilkat.JsonObject')
loJResp.LoadSb(loSbResponseBody)
loJResp.EmitCompact = 0

? "Response Body:"
? loJResp.Emit()

lnRespStatusCode = loHttp.LastStatus
? "Response Status Code = " + STR(lnRespStatusCode)
IF (lnRespStatusCode >= 400) THEN
    ? "Response Header:"
    ? loHttp.LastHeader
    ? "Failed."
    RELEASE loJwt
    RELEASE loJose
    RELEASE loClaims
    RELEASE loHttp
    RELEASE loSbResponseBody
    RELEASE loJResp
    CANCEL
ENDIF

* 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

lnPage_count = loJResp.IntOf("page_count")
lnPage_number = loJResp.IntOf("page_number")
lnPage_size = loJResp.IntOf("page_size")
lnTotal_records = loJResp.IntOf("total_records")
i = 0
lnCount_i = loJResp.SizeOfArray("users")
DO WHILE i < lnCount_i
    loJResp.I = i
    lcId = loJResp.StringOf("users[i].id")
    lcFirst_name = loJResp.StringOf("users[i].first_name")
    lcLast_name = loJResp.StringOf("users[i].last_name")
    lcEmail = loJResp.StringOf("users[i].email")
    lnV_type = loJResp.IntOf("users[i].type")
    lnPmi = loJResp.IntOf("users[i].pmi")
    lcTimezone = loJResp.StringOf("users[i].timezone")
    lnVerified = loJResp.IntOf("users[i].verified")
    lcCreated_at = loJResp.StringOf("users[i].created_at")
    lcLast_login_time = loJResp.StringOf("users[i].last_login_time")
    lcLanguage = loJResp.StringOf("users[i].language")
    lcPhone_number = loJResp.StringOf("users[i].phone_number")
    lcStatus = loJResp.StringOf("users[i].status")
    lcRole_id = loJResp.StringOf("users[i].role_id")
    i = i + 1
ENDDO

RELEASE loJwt
RELEASE loJose
RELEASE loClaims
RELEASE loHttp
RELEASE loSbResponseBody
RELEASE loJResp