✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

So erstellen Sie ein Meeting in Zoom mit Zoom API und PHP

414

Vor kurzem arbeitete ich an einem Projekt, bei dem ich mit der Zoom-API interagieren musste. In der Anwendung des Kunden haben wir viele Dinge mit der Zoom-API implementiert, wie Konten, Abrechnung, Meetings, Gruppen, Berichte, Räume usw. Obwohl wir viele Dinge mit der Zoom-API gemacht haben, werde ich mich in diesem Tutorial darauf konzentrieren, wie es geht Erstellen Sie ein Meeting mit Zoom API und PHP.

Wie wir alle wissen, ist Zoom eine Plattform, die für Telekonferenzen, Telearbeit, Fernunterricht usw. verwendet wird. Es ist bei Menschen beliebt für Online-Konferenzen, Meetings, Webinare und andere Dinge.

Diejenigen, die ein Meeting über die Zoom-API erstellen möchten, müssen entweder OAuth oder JWT wählen, um mit ihren APIs zu interagieren. OAuth und JWT (JSON-Webtoken) bieten ein hohes Maß an Sicherheit, um Interaktionen mit den Diensten von Drittanbietern durchzuführen. In diesem Tutorial verwenden wir den OAuth-Prozess und kommunizieren darüber mit der Zoom-API.

Sie können auch das Tutorial Zoom-Integration mit JWT in PHP überprüfen .

Erstellen Sie eine OAuth-App auf Zoom

Sobald Sie Ihr Zoom-Konto haben, müssen Sie mit den folgenden Schritten eine OAuth-App auf Zoom erstellen.

  • Registrieren Sie Ihre App auf dem Zoom APP Marketplace.
  • Bei der Registrierung einer App erhalten Sie Ihre generierten Zugangsdaten. Hier müssen Sie die Weiterleitungs-URL für OAuth und die Whitelist-URL übergeben.
  • Geben Sie im nächsten Schritt die grundlegenden Informationen zu Ihrer App ein.
  • Auf der Registerkarte können Sie optional einige zusätzliche Funktionen wie Event-Abonnements und Chat-Abonnements für Ihre App aktivieren.
  • Auf der Registerkarte "Bereiche" müssen Sie Bereiche für Ihre App hinzufügen. Sie können beispielsweise einen Bereich für Zoom-Meetings hinzufügen.

Wenn Sie sich auf localhost befinden, verwenden Sie den ngrok und generieren Sie die lokale URL. In meinem Fall sind die ngrok-URLs für die OAuth-Umleitung und die Whitelist-URL wie unten gezeigt.

Wenn Sie Probleme beim Erstellen einer OAuth-App haben, lesen Sie bitte die offizielle Dokumentation von Zoom zum Erstellen einer OAuth-App.

Grundlegende Einrichtung und Konfiguration

Ich habe keine PHP-Bibliothek gefunden, die verwendet werden kann, um mit der Zoom-API zu interagieren. Wenn ich etwas recherchiere, kann ich es über die Guzzle-Bibliothek und die Zoom-REST-API verwalten. Installieren Sie die Guzzle-Bibliothek mit dem Befehl:

composer require guzzlehttp/guzzle

Um mit der Zoom REST API zu interagieren, muss ein Zugriffstoken gesendet werden. Wir werden es generieren und in der Datenbank speichern. Das Zugriffstoken ist für einen kurzen Zeitraum gültig. In unserem Code werden wir das Zugriffstoken im Hintergrund neu generieren, damit der Benutzer den Autorisierungsvorgang nicht erneut durchführen muss.

CREATE TABLE `token` ( `id` int(11) NOT NULL AUTO_INCREMENT,
 `access_token` text NOT NULL,
 PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Da wir Tokenwerte aus der Datenbank abrufen müssen, müssen wir einen Code dafür schreiben. Erstellen Sie eine Datei class-db.phpund fügen Sie den folgenden Code darin ein.

class-db.php

<?php
class DB {
    private $dbHost     = "DB_HOST";
    private $dbUsername = "DB_USERNAME";
    private $dbPassword = "DB_PASSWORD";
    private $dbName     = "DB_NAME";
  
    public function __construct(){
        if(!isset($this->db)){
            // Connect to the database
            $conn = new mysqli($this->dbHost, $this->dbUsername, $this->dbPassword, $this->dbName);
            if($conn->connect_error){
                die("Failed to connect with MySQL: ". $conn->connect_error);
            }else{
                $this->db = $conn;
            }
        }
    }
  
    public function is_table_empty() {
        $result = $this->db->query("SELECT id FROM token");
        if($result->num_rows) {
            return false;
        }
  
        return true;
    }
  
    public function get_access_token() {
        $sql = $this->db->query("SELECT access_token FROM token");
        $result = $sql->fetch_assoc();
        return json_decode($result['access_token']);
    }
  
    public function get_refersh_token() {
        $result = $this->get_access_token();
        return $result->refresh_token;
    }
  
    public function update_access_token($token) {
        if($this->is_table_empty()) {
            $this->db->query("INSERT INTO token(access_token) VALUES('$token')");
        } else {
            $this->db->query("UPDATE token SET access_token = '$token' WHERE id = (SELECT id FROM token)");
        }
    }
}

Stellen Sie sicher, dass Sie die Platzhalter durch Ihre tatsächlichen Datenbankanmeldeinformationen ersetzen. Als Nächstes generieren wir ein Zugriffstoken über den OAuth-Prozess.

Generieren Sie ein Zugriffstoken

Der Benutzer kann mithilfe der App-Anmeldeinformationen und des OAuth-Prozesses ein Zugriffstoken für sein Konto erstellen. Erstellen Sie eine config.phpDatei, speichern Sie App-Anmeldeinformationen und leiten Sie die URL in dieser PHP-Datei um. Beziehen Sie die anderen Umgebungen wie die DB-Klasse und die Herstellerbibliothek ebenfalls wie folgt ein.

config.php

<?php
require_once 'vendor/autoload.php';
require_once "class-db.php";
  
define('CLIENT_ID', 'YOUR_CLIENT_ID');
define('CLIENT_SECRET', 'YOUR_CLIENT_SECRET');
define('REDIRECT_URI', 'REDIRECT_URL_FOR_OAUTH');

Ersetzen Sie die Platzhalter durch Ihre App-Anmeldeinformationen und legen Sie dieselbe Weiterleitungs-URL fest, die Sie in der Zoom OAuth-App hinzugefügt haben. In meinem Fall lautet die Weiterleitungs-URL https://f2448150.ngrok.io/zoom/callback.php. Das bedeutet callback.php, dass wir in die Datei den Code schreiben müssen, der eine Zoom-API aufruft, ein Zugriffstoken anfordern und in der Datenbank speichern müssen.

callback.php

<?php
require_once 'config.php';
  
try {
    $client = new GuzzleHttpClient(['base_uri' => 'https://zoom.us']);
  
    $response = $client->request('POST', '/oauth/token', [
        "headers" => [
            "Authorization" => "Basic ". base64_encode(CLIENT_ID.':'.CLIENT_SECRET)
        ],
        'form_params' => [
            "grant_type" => "authorization_code",
            "code" => $_GET['code'],
            "redirect_uri" => REDIRECT_URI
        ],
    ]);
  
    $token = json_decode($response->getBody()->getContents(), true);
  
    $db = new DB();
  
    if($db->is_table_empty()) {
        $db->update_access_token(json_encode($token));
        echo "Access token inserted successfully.";
    }
} catch(Exception $e) {
    echo $e->getMessage();
}

Lassen Sie uns nun eine autorisierte URL generieren, auf die ein Benutzer klicken und den Autorisierungsvorgang abschließen kann. Ich werde diese URL in der index.phpDatei erstellen.

index.php

<?php
require_once 'config.php';
  
$url = "https://zoom.us/oauth/authorize?response_type=code&client_id=".CLIENT_ID."&redirect_uri=".REDIRECT_URI;
?>
  
<a href="<?php echo $url; ?>">Login with Zoom</a>

Führen Sie die obige Datei im Browser aus, klicken Sie auf den Link „Mit Zoom anmelden” und schließen Sie den Autorisierungsvorgang ab. Bei erfolgreicher Authentifizierung sollten Sie eine Erfolgsmeldung sehen und das Zugriffstoken würde in Ihrer tokenTabelle gespeichert. Wenn das funktioniert, können wir mit der Zoom-API ein Meeting erstellen.

Erstellen Sie ein Meeting in Zoom mit der Zoom-API

Zoom bietet einen Endpunkt zum Erstellen eines Meetings über seine REST-API. Sie können dies in ihrer Dokumentation nachlesen. Es erfordert das Senden einer POST-Anfrage an den angegebenen Endpunkt zusammen mit den erforderlichen Parametern.

Der API-Endpunkt erfordert auch die Übergabe eines Zugriffstokens im Authorization-Header. Wie ich bereits sagte, hat das Zugriffstoken eine kurze Lebensdauer und wir werden es im Hintergrund neu generieren, ohne erneut nach dem Authentifizierungsprozess zu fragen.

Ich habe eine create-meeting.phpDatei zum Senden einer POST-Anfrage an den Endpunkt erstellt. Ich habe auch die Bedingung des Tokenablaufs behandelt und ihn bei Ablauf neu generiert.

create-meeting.php

<?php
require_once 'config.php';
  
function create_meeting() {
    $client = new GuzzleHttpClient(['base_uri' => 'https://api.zoom.us']);
  
    $db = new DB();
    $arr_token = $db->get_access_token();
    $accessToken = $arr_token->access_token;
  
    try {
        $response = $client->request('POST', '/v2/users/me/meetings', [
            "headers" => [
                "Authorization" => "Bearer $accessToken"
            ],
            'json' => [
                "topic" => "Let's learn Laravel",
                "type" => 2,
                "start_time" => "2021-03-05T20: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;
  
    } catch(Exception $e) {
        if( 401 == $e->getCode()) {
            $refresh_token = $db->get_refersh_token();
  
            $client = new GuzzleHttpClient(['base_uri' => 'https://zoom.us']);
            $response = $client->request('POST', '/oauth/token', [
                "headers" => [
                    "Authorization" => "Basic ". base64_encode(CLIENT_ID.':'.CLIENT_SECRET)
                ],
                'form_params' => [
                    "grant_type" => "refresh_token",
                    "refresh_token" => $refresh_token
                ],
            ]);
            $db->update_access_token($response->getBody());
  
            create_meeting();
        } else {
            echo $e->getMessage();
        }
    }
}
  
create_meeting();

Wenn Ihnen der Code aufgefallen ist, habe ich "2021-03-20T20:30:00" als ‘start_time’ übergeben. Dies bedeutet, dass die Besprechungszeit der 20. März 2021, 20:30 Uhr ist. Der Benutzer sollte das Format dafür übergeben in yyyy-MM-ddTHH:mm:ss. Für den ‘Typ’-Schlüssel habe ich den Wert ‘2’ übergeben, der für ein geplantes Meeting steht.Der Benutzer muss auch ein Meeting-Passwort festlegen, das ich auf ‘123456’ gesetzt habe.

Fahren Sie fort und führen Sie diesen Code aus und Sie sollten sehen, dass ein Meeting in Ihrem Zoom-Konto erstellt wird.

Zoom-Meetings auflisten

Wir haben einen Code zum Erstellen von Zoom-Meetings geschrieben. Mit diesem Code können Sie beliebig viele Besprechungen erstellen. Danach möchten Sie vielleicht alle Meetings in Ihrer Anwendung auflisten.

Zoom bietet eine API, über die wir alle unsere Zoom-Meetings abrufen können. Erstellen Sie eine Datei list-meeting.phpund verwenden Sie den unten stehenden Code, um alle Meetings zu drucken.

list-meeting.php

<?php
require_once 'config.php';
  
$client = new GuzzleHttpClient(['base_uri' => 'https://api.zoom.us']);
  
$db = new DB();
$arr_token = $db->get_access_token();
$accessToken = $arr_token->access_token;
  
$response = $client->request('GET', '/v2/users/me/meetings', [
    "headers" => [
        "Authorization" => "Bearer $accessToken"
    ]
]);
 
$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";
    }
}

Im obigen Code drucke ich ein Thema und eine URL von Meetings. Sie können auch andere Informationen ausdrucken. Drucken Sie die Variable $data, um eine Liste der verfügbaren Informationen zu erhalten.

Frühere Meeting-Teilnehmer abrufen

Sobald das Meeting vorbei ist, können Sie über die Zoom-API eine Liste der Teilnehmer abrufen. Es wird empfohlen, diese API nur aufzurufen, wenn Sie ein kostenpflichtiges Konto haben. Diese spezielle API erfordert ein kostenpflichtiges Konto. Wenn Sie versuchen, diese API mit einem kostenlosen Konto aufzurufen, erhalten Sie eine Fehlermeldung.

<?php
require_once 'config.php';
   
$client = new GuzzleHttpClient(['base_uri' => 'https://api.zoom.us']);
   
$db = new DB();
$arr_token = $db->get_access_token();
$accessToken = $arr_token->access_token;
   
$response = $client->request('GET', '/v2/past_meetings/MEETING_ID/participants', [
    "headers" => [
        "Authorization" => "Bearer $accessToken"
    ]
]);
  
$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";
    }
}

Ersetzen Sie den Platzhalter MEETING_ID durch die tatsächliche ID der letzten Besprechung. In der Antwort erhalten Sie die Namen und E-Mails der Teilnehmer.

Eine Besprechung löschen

Der Benutzer kann mit den Zoom-API-Endpunkten wie Auflisten, Aktualisieren und Löschen eines Meetings spielen. Sie müssen lediglich deren Richtlinien zur Verwendung bestimmter Endpunkte befolgen. Sie können beispielsweise ein Meeting löschen, indem Sie eine DELETE-Anfrage an den API-Endpunkt senden. An diesen Endpunkt müssen Sie Ihre Meeting-ID wie unten gezeigt übergeben.

<?php
require_once 'config.php';
  
$client = new GuzzleHttpClient(['base_uri' => 'https://api.zoom.us']);
  
$db = new DB();
$arr_token = $db->get_access_token();
$accessToken = $arr_token->access_token;
  
$response = $client->request('DELETE', '/v2/meetings/{meeting_id}', [
    "headers" => [
        "Authorization" => "Bearer $accessToken"
    ]
]);
 
if (204 == $response->getStatusCode()) {
    echo "Meeting is deleted.";
}

Ich hoffe, Sie haben gelernt, wie man ein Meeting mit Zoom API und PHP erstellt. Ich würde gerne Ihre Gedanken und Vorschläge im Kommentarbereich unten hören.

Zum Thema passende Artikel

Aufnahmequelle: artisansweb.net

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen