✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Jak utworzyć spotkanie na Zoom za pomocą Zoom API i PHP

80

Ostatnio pracowałem nad projektem, w którym potrzebowałem interakcji z Zoom API. W aplikacji klienta zaimplementowaliśmy wiele rzeczy przy użyciu Zoom API, takich jak Konta, Rozliczenia, Spotkania, Grupy, Raporty, Pokoje itp. Chociaż zrobiliśmy wiele rzeczy przy użyciu Zoom API, w tym samouczku skupię się na tym, jak utwórz spotkanie za pomocą Zoom API i PHP.

Jak wszyscy wiemy, Zoom to platforma, która służy do telekonferencji, telepracy, edukacji na odległość itp. Jest popularna wśród osób na konferencjach online, spotkaniach, webinariach i innych rzeczach.

Ci, którzy chcą utworzyć spotkanie za pomocą Zoom API, muszą wybrać OAuth lub JWT do interakcji z ich interfejsami API. OAuth i JWT (token sieciowy JSON) zapewniają wysoki poziom bezpieczeństwa do interakcji z usługami innych firm. W tym samouczku użyjemy procesu OAuth i za jego pośrednictwem będziemy komunikować się z Zoom API.

Możesz również sprawdzić samouczek Integracja Zoom z JWT w PHP.

Utwórz aplikację OAuth w Zoom

Po uzyskaniu konta Zoom musisz utworzyć aplikację OAuth w Zoom, wykonując poniższe czynności.

  • Zarejestruj swoją aplikację na Zoom APP Marketplace.
  • Po zarejestrowaniu aplikacji otrzymasz wygenerowane dane uwierzytelniające. Tutaj musisz podać adres URL przekierowania dla OAuth i URL białej listy.
  • W następnym kroku wprowadź podstawowe informacje o swojej aplikacji.
  • Na karcie możesz opcjonalnie włączyć dla swojej aplikacji kilka dodatkowych funkcji, takich jak subskrypcje wydarzeń i subskrypcje czatu.
  • Na karcie „Zakresy" musisz dodać zakresy dotyczące Twojej aplikacji. Na przykład możesz dodać zakres spotkań Zoom.

Jeśli jesteś na localhost, użyj ngrok i wygeneruj lokalny adres URL. W moim przypadku adresy URL ngrok dla przekierowania OAuth i URL białej listy są pokazane poniżej.

Jeśli masz problem z tworzeniem aplikacji OAuth, zapoznaj się z oficjalną dokumentacją Zoom dotyczącą tworzenia aplikacji OAuth.

Podstawowa konfiguracja i konfiguracja

Nie znalazłem żadnej biblioteki PHP, która mogłaby być użyta do interakcji z Zoom API. Prowadząc trochę badań, jestem w stanie zarządzać nim poprzez bibliotekę Guzzle i Zoom REST API. Zainstaluj bibliotekę Guzzle za pomocą polecenia:

composer require guzzlehttp/guzzle

Interakcja z Zoom REST API wymaga wysłania tokena dostępu. Wygenerujemy go i zapiszemy w bazie danych. Token dostępu jest ważny przez krótki czas. W naszym kodzie zregenerujemy token dostępu w tle, aby użytkownik nie musiał ponownie wykonywać procesu autoryzacji.

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

Ponieważ będziemy musieli pobrać wartości tokenów z bazy danych, musimy napisać dla nich kod. Utwórz plik class-db.phpi dodaj do niego poniższy kod.

klasa-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)");
        }
    }
}

Pamiętaj, aby zastąpić symbole zastępcze rzeczywistymi poświadczeniami bazy danych. Następnie wygenerujmy token dostępu za pośrednictwem procesu OAuth.

Wygeneruj token dostępu

Użytkownik może utworzyć token dostępu dla swojego konta przy użyciu poświadczeń aplikacji i procesu OAuth. Utwórz config.phpplik, przechowuj poświadczenia aplikacji i adres URL przekierowania w tym pliku PHP. Uwzględnij inne środowiska, takie jak klasa DB i biblioteka dostawcy, również w następujący sposób.

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');

Zastąp symbole zastępcze danymi logowania do aplikacji i ustaw ten sam adres URL przekierowania, który dodałeś w aplikacji Zoom OAuth. W moim przypadku adres URL przekierowania to https://f2448150.ngrok.io/zoom/callback.php. Oznacza to, że w callback.phppliku musimy napisać kod, który wywołuje API Zoom, żądać tokena dostępu i przechowywać go w bazie danych.

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();
}

Teraz wygenerujmy autoryzowany adres URL, pod którym użytkownik może kliknąć i zakończyć proces autoryzacji. Zamierzam utworzyć ten adres URL w index.phppliku.

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>

Uruchom powyższy plik w przeglądarce, kliknij link „Zaloguj się z Zoomem” i zakończ proces autoryzacji. Po pomyślnym uwierzytelnieniu powinien pojawić się komunikat o powodzeniu, a token dostępu zostanie zapisany w Twojej tokentabeli. Jeśli to zadziała, możemy śmiało stworzyć spotkanie z Zoom API.

Utwórz spotkanie na Zoom za pomocą Zoom API

Zoom zapewnia punkt końcowy do tworzenia spotkania za pośrednictwem interfejsu API REST. Możesz o tym przeczytać w ich dokumentacji. Wymaga wysłania żądania POST do danego punktu końcowego wraz z wymaganymi parametrami.

Punkt końcowy interfejsu API wymaga również przekazania tokena dostępu w nagłówku autoryzacji. Jak wspomniałem wcześniej, token dostępowy ma krótki żywot i zamierzamy go odtworzyć w tle bez ponownego proszenia o uwierzytelnienie.

Utworzyłem create-meeting.phpplik do wysyłania żądania POST do punktu końcowego. Zajmowałem się również warunkiem wygaśnięcia tokena i jego regeneracji po wygaśnięciu.

tworzenie-spotkanie.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();

Jeśli zauważyłeś kod, podałem „2021-03-20T20:30:00″ jako „start_time”. Oznacza to, że spotkanie będzie miało miejsce 20 marca 2021, 20:30. Użytkownik powinien podać format dla tego kodu w rrrr-MM-ddTHH:mm:ss.Dla klucza „type” przekazałem wartość „2″, która dotyczy zaplanowanego spotkania.Użytkownik musi również ustawić hasło spotkania, które ustawiłem na „123456″.

Śmiało i uruchom ten kod, a powinieneś zobaczyć, że spotkanie jest tworzone na Twoim koncie Zoom.

Lista spotkań Zoom

Napisaliśmy kod do tworzenia spotkań Zoom. Używając tego kodu, możesz tworzyć tyle spotkań, ile chcesz. Następnie możesz chcieć wyświetlić w aplikacji listę wszystkich spotkań.

Zoom zapewnia API, przez które możemy pobrać wszystkie nasze spotkania Zoom. Utwórz plik list-meeting.phpi użyj poniższego kodu, który wydrukuje wszystkie spotkania.

lista-spotkanie.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";
    }
}

W powyższym kodzie drukuję temat i URL spotkań. Możesz również wydrukować inne informacje. Wydrukuj zmienną, $dataaby uzyskać listę dostępnych informacji.

Uzyskaj poprzednich uczestników spotkania

Po zakończeniu spotkania możesz uzyskać listę uczestników za pomocą Zoom API. Zaleca się wywoływanie tego API tylko wtedy, gdy korzystasz z płatnego konta. Ten konkretny interfejs API wymaga posiadania płatnego konta. Jeśli spróbujesz wywołać ten interfejs API za pomocą bezpłatnego konta, otrzymasz błąd.

<?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";
    }
}

Zastąp symbol zastępczy MEETING_ID rzeczywistym identyfikatorem poprzedniego spotkania. W odpowiedzi otrzymasz nazwiska i e-maile uczestników.

Usuń spotkanie

Użytkownik może bawić się punktami końcowymi Zoom API, takimi jak lista, aktualizacja, usuwanie spotkania. Wszystko, co musisz zrobić, to postępować zgodnie z ich wytycznymi dotyczącymi korzystania z określonych punktów końcowych. Na przykład możesz usunąć spotkanie, wysyłając żądanie DELETE do punktu końcowego interfejsu API. Do tego punktu końcowego musisz przekazać swój identyfikator spotkania, jak pokazano poniżej.

<?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.";
}

Mam nadzieję, że wiesz, jak stworzyć spotkanie przy użyciu Zoom API i PHP. Chciałbym usłyszeć wasze przemyślenia i sugestie w sekcji komentarzy poniżej.

Powiązane artykuły

Źródło nagrywania: artisansweb.net

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów