Level 3
As nobody can answer me
i respond to myself
i did not find a way to do it
Here is code how i can achieve it without laravel-passport :
<?php
// from my own ZoomService
....
public function base64UrlEncode($string)
{
return str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($string));
}
public function generateJWT()
{
$headers = json_encode([
'alg' => 'HS256',
'typ' => 'JWT'
]);
$payload = json_encode([
'iss' => config('services.zoom.key'),
'exp' => now()->addDay(1)->timestamp
]);
$base64Header = $this->base64UrlEncode($headers);
$base64Payload = $this->base64UrlEncode($payload);
$data = sprintf(
'%s.%s',
$base64Header,
$base64Payload
);
$signature = hash_hmac('sha256', $data, config('services.zoom.secret'), true);
$base64Signature = $this->base64UrlEncode($signature);
/*
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
API_SECRET)
*/
$token = sprintf(
'%s.%s.%s',
$base64Header,
$base64Payload,
$base64Signature
);
return $token;
}
maybe it could help us