Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

franckysolo's avatar

Laravel-passport for external api

Hello,

i've integrate zoom us api on a laravel project during development i use jwt token provide by zoom api It's working fine but the token expire every day and i need to refresh it dynamically

is it possible to use laravel-passport to use jwt token for zoom us api?

thanks fky

0 likes
1 reply
franckysolo's avatar
franckysolo
OP
Best Answer
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

Please or to participate in this conversation.