✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Hur man skapar zoommöten med PHP och JWT

23

Tidigare har jag skrivit en artikel som förklarar att skapa ett Zoom-möte med PHP och OAuth. En av våra läsare frågade om att skapa ett Zoom-möte med JWT (JSON Web Tokens) och PHP. Zoom API tillåter oss att använda både OAuth eller JWT för att hantera deras API: er. Zoom API kräver Bearer-token som genereras antingen via OAuth eller JWT.

Obs! JWT får endast användas för interna applikationer och processer. Alla appar som skapats för tredjepartsanvändning måste använda apptypen OAuth.

När du vill bygga en Zoom-app för internt bruk är JWT-metoden enklare än OAuth.

Komma igång

För att komma igång, gå till Zoom Developer Dashboard och skapa en ny app. Välj JWTsom apptyp och kopiera Zoom API-nyckel och hemlighet.

En enda JWT består av tre komponenter: sidhuvud, nyttolast och signatur med .separata vardera. Till exempel:aaaaa.bbbbb.ccccc

Flera bibliotek finns tillgängliga som hjälper till att generera JWT. Jag kommer att rekommendera att använda firebase / php-jwt- biblioteket. Detta bibliotek ger en mycket enklare metod för att skapa JWT. Installera detta bibliotek med kommandot nedan.

composer require firebase/php-jwt

Därefter måste vi skicka en POST-begäran till Zoom API för att skapa ett möte. Man kan använda cURL för detta ändamål. Men jag gillar personligen en Guzzle som ger mycket renare kod än cURL. En annan fördel med att använda Guzzle är att du inte behöver ha cURL-tillägg aktiverat på servern.

Kör kommandot nedan för att installera Guzzle-biblioteket.

composer require guzzlehttp/guzzle

Skapa zoommöten med JWT och PHP

Vi har installerat två paket för att uppnå vårt mål. Nu måste vi inkludera dess miljö i vår PHP-fil. Vi har också kopierat Zoom API-nycklar i föregående steg. Låt oss definiera dessa nycklar som konstanter i PHP.

<?php
require_once 'vendor/autoload.php';
 
use FirebaseJWTJWT;
use GuzzleHttpClient;
 
define('ZOOM_API_KEY', 'API_KEY_HERE');
define('ZOOM_SECRET_KEY', 'API_SECRET_HERE');

Nästa, för att generera JWT med firebase/php-jwtpaketet kommer vår kod att vara som följer.

function getZoomAccessToken() {
    $key = ZOOM_SECRET_KEY;
    $payload = array(
        "iss" => ZOOM_API_KEY,
        'exp' => time() + 3600,
    );
    return JWT::encode($payload, $key);    
}

Slutligen, för att skapa ett Zoom-möte måste den skicka POST-begäran till slutpunkten /v2/users/me/meetingsmed JWT som bärartoken.

function createZoomMeeting() {
    $client = new Client([
        // Base URI is used with relative requests
        'base_uri' => 'https://api.zoom.us',
    ]);
 
    $response = $client->request('POST', '/v2/users/me/meetings', [
        "headers" => [
            "Authorization" => "Bearer ". getZoomAccessToken()
        ],
        'json' => [
            "topic" => "Let's Learn WordPress",
            "type" => 2,
            "start_time" => "2021-01-30T20:30:00",
            "duration" => "30", // 30 mins
            "password" => "123456"
        ],
    ]);
 
    $data = json_decode($response->getBody());
    echo "Join URL: ". $data->join_url;
    echo "<br>";
    echo "Meeting Password: ". $data->password;
}
 
createZoomMeeting();

Lista zoommöten

I din ansökan kanske du vill lista alla Zoom-möten. Zoom tillhandahåller ett API genom vilket vi kan få en lista över alla Zoom-möten. Med koden nedan kan du skriva ut information om dina Zoom-möten.

$client = new GuzzleHttpClient(['base_uri' => 'https://api.zoom.us']);
 
$response = $client->request('GET', '/v2/users/me/meetings', [
    "headers" => [
        "Authorization" => "Bearer ". getZoomAccessToken()
    ]
]);
 
$data = json_decode($response->getBody());
 
if (!empty($data)) {
    foreach ($data->meetings as $d) {
        $topic = $d->topic;
        $join_url = $d->join_url;
        echo "<h3>Topic: $topic</h3>";
        echo "Join URL: $join_url";
    }
}

Här skriver jag ut ett ämne och en URL för möten. Du kan också skriva ut annan information. Skriv ut variabeln för $dataatt få en lista med tillgänglig information.

Få deltagare i tidigare möten

För de senaste mötena kan du få en lista över deltagare med hjälp av Zoom API. Om du har ett betalt konto kan du använda detta specifika API. Detta API kräver ett betalt konto. Om du försöker ringa detta API med ett gratis konto får du ett fel.

$client = new GuzzleHttpClient(['base_uri' => 'https://api.zoom.us']);
  
$response = $client->request('GET', '/v2/past_meetings/MEETING_ID/participants', [
    "headers" => [
        "Authorization" => "Bearer ". getZoomAccessToken()
    ]
]);
  
$data = json_decode($response->getBody());
if (!empty($data)) {
    foreach ($data->participants as $p) {
        $name = $p->name;
        $email = $p->user_email;
        echo "Name: $name";
        echo "Email: $email";
    }
}

Byt ut platshållaren MEETING_ID med det faktiska ID-numret för tidigare möte. I svaret får du deltagarnas namn och e-postmeddelanden.

Ta bort zoommöte med JWT och PHP

Genom att lägga till för att skapa ett möte tillhandahåller Zoom också API-slutpunkter som lista, uppdatera, radera ett möte. Användaren måste följa sin API-dokumentation för att använda en specifik slutpunkt. Som ett exempel kan du radera ett möte genom att skicka en DELETE-begäran till Zoom API-slutpunkten. Du måste skicka ditt mötes-ID till slutpunkten enligt följande.

function deleteZoomMeeting($meeting_id) {
    $client = new Client([
        // Base URI is used with relative requests
        'base_uri' => 'https://api.zoom.us',
    ]);
 
    $response = $client->request("DELETE", "/v2/meetings/$meeting_id", [
        "headers" => [
            "Authorization" => "Bearer ". getZoomAccessToken()
        ]
    ]);
 
    if (204 == $response->getStatusCode()) {
        echo "Meeting deleted.";
    }
}
 
deleteZoomMeeting('MEETING_ID_HERE');

Jag hoppas att du fick veta om att skapa Zoom-möten med PHP och JWT. Dela dina tankar och förslag i kommentarsektionen nedan.

relaterade artiklar

Inspelningskälla: artisansweb.net

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer