Can someone please provide me PHP code for generating JWTKey

Hello All,

I need php script for generating JWTKey for zoom API v2 integration.
Can someone please provide me the script and their supporting files.

Thank you

1 Like

Hey @Dora_Reddy,

See the JWT Token generation sample PHP code here:

https://marketplace.zoom.us/docs/guides/auth/jwt#sample-code

Thanks,
Tommy

Thanks @tommy for the reply.

From the link i see PHP code below and it is used for Active Users from Zoom not for generateJWT token.

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.zoom.us/v2/users?status=active&page_size=30&page_number=1",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "authorization: Bearer 39ug3j309t8unvmlmslmlkfw853u8",
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}

Actually I’m expecting script for generating JWT token like below ( I don’t have complete script I found below piece of code in some other thread)

private function generateJWTKey() {
$key = $this->zoom_api_key;
$secret = $this->zoom_api_secret;
$token = array(
ā€œissā€ => $key,
ā€œexpā€ => time() + 3600 //60 seconds as suggested
);
return JWT::encode( $token, $secret );
}

Hey @Dora_Reddy,

Ah true, apologies. You can see sample PHP code and libraries for generating JWT tokens here:

Thanks,
Tommy

1 Like

@tommy I’m facing difficulty in generating JWT token through PHP Code.

So I’m generating JWT token from JWT app provided at marketplace.zoom.us below
https://marketplace.zoom.us/develop/apps/E******************n/credentials

by having Expiration Time for a longer period of 2 years and saving the JWT token in our database.

Later on using the saved JWT token whenever i use Zoom API for creating meetings.

Will this work?

Hey @Dora_Reddy,

That will work, but it is more secure to generate the JWT Token for a shorter amount of time, each time you want to use it.

Did none of the helper libraries work from jwt.io?

Thanks,
Tommy

1 Like

@tommy Thanks for the reply. I looked into https://jwt.io/ but it had many libraries. I’m confused to pick the correct one suitable for my requirement.

In this post Help with api create meeting with php @mike1 posted below code for generating JWT but it didn’t have full code like JWT::encode function. Looking for full working code
//function to generate JWT
private function generateJWTKey() {
$key = $this->zoom_api_key;
$secret = $this->zoom_api_secret;
$token = array(
ā€œissā€ => $key,
ā€œexpā€ => time() + 3600 //60 seconds as suggested
);
return JWT::encode( $token, $secret );
}

1 Like

Did you ever figure this out? I’m just now trying to make this work, but none of the libraries match up well to the Zoom API documentation.

Still i didn’t found any solution. Let me know if you find any. Looking for help.

1 Like

Hey @Dora_Reddy, @laurinkeithdavis,

I would suggest using this library:

Thanks,
Tommy

Yes, that is the one that I’m trying to use, but to no avail.

@laurinkeithdavis Can you provide a sample of how you’re trying to do it?

You can find a well-written write up here as well: https://www.sitepoint.com/php-authorization-jwt-json-web-tokens/

1 Like

I don’t know that posting any example I have so far would be helpful. I’m just trying to make the connection, I can’t even figure out what the parameters are supposed to be or how I generate the token.

Read that one as well, and thanks, but still can’t figure it out. Is there not a working example of using the Zoom API in PHP? The one in the docs does not make sense (https://marketplace.zoom.us/docs/guides/auth/jwt) - what goes where in that sample?? What is the ā€œBearerā€?

@laurinkeithdavis, I found the Zoom documentation lacking as well. Here’s an example of generating the token with firebase/php-jwt and GuzzleHttp (see code below).

This will generate a JWT token with a 5 second lifespan. Then, it will use the token to make a request to Zoom’s API with GuzzleHttp and list users on the account.

$api_secret = ā€œXXXXXXā€;
$api_key = ā€œXXXXXXā€;
$payload = array(
ā€œissā€ => $api_key,
ā€œexpā€ => (time() + 5)
);
$jwt = JWT::encode($payload, $api_secret);

$client = new \GuzzleHttp\Client([ā€˜headers’ => [ā€˜authorization’ => 'Bearer '.$jwt]]);
$response = $client->request(
ā€˜GET’,
ā€˜https://api.zoom.us/v2/users’
);

return json_decode($response->getBody(), true);

2 Likes

Thanks for providing a solution @andrew4! :slight_smile:

@laurinkeithdavis let me know if this helps!

As for what the ā€œBearerā€ is, that just let’s the Zoom API know what kind of authentication to expect. Here is the request header you want to provide when making requests to the Zoom API:

{ "Authorization": "Bearer JWT_TOKEN_HERE" }

We will work on improving our JWT docs as soon as possible.

-Tommy

1 Like

I’ve also found this one aspect to be very lacking in documentation. All the documentation that I’ve found is way over complicated. I just need to generate a JWT on the fly before each API call. I thought I remember seeing a Postman sample embedded in a webpage to generate the JWT but now I can’t find that.

I would love to see the curl code to generate a JWT in a format like below. I’m initiating everything from Filemaker so if I have the below format I can take from there.

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



Thanks!

Hey @FutureX,

Thanks for your feedback on our docs, we will work on making it more clear.

You can generate a test JWT Token on your JWT App Credentials page in the Marketplace.

Here are the JWT generation docs with a link to see libraries we recommend:

https://marketplace.zoom.us/docs/guides/auth/jwt

Thanks,
Tommy

Thanks for the response but that’s not what I’m looking for. I doing the credential generation from within Filemaker so it’s a basic URL call but I just need to see how the CURL is formatted similar to the sample in my last post.

Thanks!

Hey @FutureX,

Do you mean like this?

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

Thanks,
Tommy