Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Tcl) Zoom API - Create JWT to Authenticate API RequestsSee more Zoom ExamplesCreates a JWT for the Zoom API. For more information, see https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#using-jwt
load ./chilkat.dll # 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... set apiKey "o9rw6Gq0RnqlkfaSqtCMOA" set apiSecret "UslmE23Kjh7at9z3If1xAHEyLmPDNxvxQrjR" # Create a JWT to authenticate Zoom API requests. set jwt [new_CkJwt] set jose [new_CkJsonObject] set success [CkJsonObject_UpdateString $jose "alg" "HS256"] set success [CkJsonObject_UpdateString $jose "typ" "JWT"] # Build claims to look like this: # {"aud":null,"iss":"o9rw6Gq0RnqlkfaSqtCMOA","exp":1627651762,"iat":1627646363} set claims [new_CkJsonObject] set success [CkJsonObject_UpdateString $claims "iss" $apiKey] set success [CkJsonObject_UpdateNull $claims "aud"] # Set the timestamp of when the JWT was created to now. set curDateTime [CkJwt_GenNumericDate $jwt 0] set success [CkJsonObject_AddIntAt $claims -1 "iat" $curDateTime] # Set the timestamp defining an expiration time (end time) for the token # to be now + 1 month(3600 * 24 * 30 seconds) set oneMonth [expr 3600 * [expr 24 * 30]] set success [CkJsonObject_AddIntAt $claims -1 "exp" [expr $curDateTime + $oneMonth]] # Produce the smallest possible JWT: CkJwt_put_AutoCompact $jwt 1 set strJwt [CkJwt_createJwt $jwt [CkJsonObject_emit $jose] [CkJsonObject_emit $claims] $apiSecret] puts "$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 set http [new_CkHttp] # 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 CkHttp_SetRequestHeader $http "content-type" "application/json" # Adds the "Authorization: Bearer { your_token }" header. CkHttp_put_AuthToken $http $strJwt set sbResponseBody [new_CkStringBuilder] set success [CkHttp_QuickGetSb $http "https://api.zoom.us/v2/users?status=active&page_size=30&page_number=1" $sbResponseBody] if {$success == 0} then { puts [CkHttp_lastErrorText $http] delete_CkJwt $jwt delete_CkJsonObject $jose delete_CkJsonObject $claims delete_CkHttp $http delete_CkStringBuilder $sbResponseBody exit } set jResp [new_CkJsonObject] CkJsonObject_LoadSb $jResp $sbResponseBody CkJsonObject_put_EmitCompact $jResp 0 puts "Response Body:" puts [CkJsonObject_emit $jResp] set respStatusCode [CkHttp_get_LastStatus $http] puts "Response Status Code = $respStatusCode" if {$respStatusCode >= 400} then { puts "Response Header:" puts [CkHttp_lastHeader $http] puts "Failed." delete_CkJwt $jwt delete_CkJsonObject $jose delete_CkJsonObject $claims delete_CkHttp $http delete_CkStringBuilder $sbResponseBody delete_CkJsonObject $jResp 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 set page_count [CkJsonObject_IntOf $jResp "page_count"] set page_number [CkJsonObject_IntOf $jResp "page_number"] set page_size [CkJsonObject_IntOf $jResp "page_size"] set total_records [CkJsonObject_IntOf $jResp "total_records"] set i 0 set count_i [CkJsonObject_SizeOfArray $jResp "users"] while {$i < $count_i} { CkJsonObject_put_I $jResp $i set id [CkJsonObject_stringOf $jResp "users[i].id"] set first_name [CkJsonObject_stringOf $jResp "users[i].first_name"] set last_name [CkJsonObject_stringOf $jResp "users[i].last_name"] set email [CkJsonObject_stringOf $jResp "users[i].email"] set v_type [CkJsonObject_IntOf $jResp "users[i].type"] set pmi [CkJsonObject_IntOf $jResp "users[i].pmi"] set timezone [CkJsonObject_stringOf $jResp "users[i].timezone"] set verified [CkJsonObject_IntOf $jResp "users[i].verified"] set created_at [CkJsonObject_stringOf $jResp "users[i].created_at"] set last_login_time [CkJsonObject_stringOf $jResp "users[i].last_login_time"] set language [CkJsonObject_stringOf $jResp "users[i].language"] set phone_number [CkJsonObject_stringOf $jResp "users[i].phone_number"] set status [CkJsonObject_stringOf $jResp "users[i].status"] set role_id [CkJsonObject_stringOf $jResp "users[i].role_id"] set i [expr $i + 1] } delete_CkJwt $jwt delete_CkJsonObject $jose delete_CkJsonObject $claims delete_CkHttp $http delete_CkStringBuilder $sbResponseBody delete_CkJsonObject $jResp |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.