Come creare una riunione su Zoom utilizzando Zoom API e PHP
Recentemente stavo lavorando a un progetto in cui avevo bisogno di interagire con l’API Zoom. Nell’applicazione del cliente, abbiamo implementato molte cose usando l’API Zoom come Account, Fatturazione, Riunioni, Gruppi, Rapporti, Stanze, ecc. Sebbene abbiamo fatto molte cose usando l’API Zoom, in questo tutorial mi concentrerò su come creare una riunione utilizzando l’API Zoom e PHP.
Come tutti sappiamo, Zoom è una piattaforma utilizzata per teleconferenze, telelavoro, formazione a distanza, ecc. È popolare tra le persone per conferenze online, riunioni, webinar e altre cose.
Coloro che stanno cercando di creare una riunione tramite l’API Zoom devono scegliere OAuth o JWT per interagire con le proprie API. OAuth e JWT (token web JSON) forniscono un alto livello di sicurezza per effettuare interazioni con i servizi di terze parti. In questo tutorial, utilizzeremo il processo OAuth e comunicheremo con l’API Zoom attraverso di esso.
Puoi anche controllare il tutorial sull’integrazione di Zoom con JWT in PHP.
Crea un’app OAuth su Zoom
Una volta che hai il tuo account Zoom, devi creare un’app OAuth su Zoom utilizzando i passaggi seguenti.
- Registra la tua app su Zoom APP Marketplace.
- Al momento della registrazione di un’app, otterrai le credenziali generate. Qui devi passare l’URL di reindirizzamento per OAuth e l’URL della whitelist.
- Nel passaggio successivo, inserisci le informazioni di base sulla tua app.
- Nella scheda, puoi facoltativamente abilitare alcune funzionalità aggiuntive come le iscrizioni agli eventi e le iscrizioni alle chat per la tua app.
- Nella scheda "Ambiti", devi aggiungere ambiti relativi alla tua app. Ad esempio, puoi aggiungere un ambito per le riunioni Zoom.
Se sei su localhost, usa ngrok e genera l’URL locale. Nel mio caso, gli URL ngrok per il reindirizzamento OAuth e l’URL della whitelist sono mostrati di seguito.
In caso di problemi con la creazione di un’app OAuth, fare riferimento alla documentazione ufficiale di Zoom su Creare un’app OAuth.
Impostazione e configurazione di base
Non ho trovato alcuna libreria PHP che possa essere utilizzata per interagire con l’API Zoom. Facendo qualche ricerca sono in grado di gestirlo tramite la libreria Guzzle e Zoom REST API. Installa la libreria Guzzle usando il comando:
composer require guzzlehttp/guzzle
Per interagire con Zoom REST API è necessario inviare un token di accesso. Lo genereremo e lo memorizzeremo nel database. Il token di accesso è valido per un breve periodo di tempo. Nel nostro codice, rigenereremo il token di accesso in background in modo che l’utente non debba ripetere il processo di autorizzazione.
CREATE TABLE `token` ( `id` int(11) NOT NULL AUTO_INCREMENT,
`access_token` text NOT NULL,
PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Poiché sarà necessario recuperare i valori dei token dal database, è necessario scrivere un codice per esso. Crea un file class-db.php
e aggiungi il codice qui sotto.
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)");
}
}
}
Assicurati di sostituire i segnaposto con le credenziali del tuo database effettivo. Successivamente, generiamo un token di accesso tramite il processo OAuth.
Genera un token di accesso
L’utente può creare un token di accesso per il proprio account utilizzando le credenziali dell’app e il processo OAuth. Crea un config.php
file, archivia le credenziali dell’app e reindirizza l’URL in questo file PHP. Includere anche gli altri ambienti come la classe DB e la libreria del fornitore come segue.
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');
Sostituisci i segnaposto con le credenziali della tua app e imposta lo stesso URL di reindirizzamento che hai aggiunto nell’app Zoom OAuth. Nel mio caso, l’URL di reindirizzamento è https://f2448150.ngrok.io/zoom/callback.php
. Significa che nel callback.php
file dobbiamo scrivere il codice che chiama un’API Zoom, richiedere un token di accesso e archiviarlo nel database.
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();
}
Ora, generiamo un URL autorizzato in cui un utente può fare clic e completare il processo di autorizzazione. Creerò questo URL nel index.php
file.
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>
Esegui il file sopra sul browser, fai clic sul link "Accedi con Zoom" e completa il processo di autorizzazione. In caso di autenticazione riuscita, dovresti vedere un messaggio di successo e il token di accesso verrà memorizzato nella tua token
tabella. Se funziona, possiamo andare avanti e creare una riunione con l’API Zoom.
Crea una riunione su Zoom utilizzando l’API Zoom
Zoom fornisce un endpoint per la creazione di una riunione tramite la propria API REST. Puoi leggerlo nella loro documentazione. Richiede l’invio di una richiesta POST all’endpoint specificato insieme ai parametri richiesti.
L’endpoint API richiede anche il passaggio di un token di accesso nell’intestazione dell’autorizzazione. Come ho detto prima, il token di accesso ha una vita breve e lo rigenereremo in background senza richiedere nuovamente il processo di autenticazione.
Ho creato un create-meeting.php
file per inviare una richiesta POST all’endpoint. Ho anche gestito la condizione di scadenza del token e la sua rigenerazione se scaduta.
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();
Se hai notato il codice, ho passato "2021-03-20T20:30:00" come ‘start_time’. Significa che l’orario della riunione sarà il 20 marzo 2021, 20:30. L’utente deve passare il formato per esso in aaaa-MM-ggTHH:mm:ss. Per la chiave "tipo" ho passato il valore "2" che è per una riunione pianificata. L’utente deve anche impostare una password per la riunione che ho impostato su "123456".
Vai avanti ed esegui questo codice e dovresti vedere una riunione creata sul tuo account Zoom.
Elenco riunioni Zoom
Abbiamo scritto un codice per creare riunioni Zoom. Usando questo codice, puoi creare tutte le riunioni che vuoi. Successivamente, potresti voler elencare tutte le riunioni nella tua applicazione.
Zoom fornisce un’API attraverso la quale possiamo recuperare tutte le nostre riunioni Zoom. Crea un file list-meeting.php
e usa il codice qui sotto che stamperà tutti gli incontri.
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";
}
}
Nel codice sopra, sto stampando un argomento e l’URL delle riunioni. Puoi stampare anche altre informazioni. Stampa la variabile $data
per ottenere un elenco di informazioni disponibili.
Ottieni partecipanti alle riunioni precedenti
Al termine della riunione, puoi ottenere un elenco dei partecipanti utilizzando l’API Zoom. Si consiglia di chiamare questa API solo se si utilizza un account a pagamento. Questa specifica API richiede un account a pagamento. Se provi a chiamare questa API con un account gratuito, otterresti un errore.
<?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";
}
}
Sostituisci il segnaposto MEETING_ID con l’ID della riunione passata. Nella risposta, riceverai i nomi e le e-mail dei partecipanti.
Elimina una riunione
L’utente può giocare con gli endpoint dell’API Zoom come elencare, aggiornare, eliminare una riunione. Tutto quello che devi fare è seguire le loro linee guida sull’utilizzo di endpoint specifici. Ad esempio, puoi eliminare una riunione inviando una richiesta DELETE all’endpoint API. A questo endpoint, devi passare il tuo ID riunione come mostrato di seguito.
<?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.";
}
Spero che tu sappia come creare una riunione utilizzando Zoom API e PHP. Mi piacerebbe sentire i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.
articoli Correlati
- Come utilizzare l’API di YouTube per caricare video sul canale YouTube
- Come usare Guzzle per inviare richieste HTTP
- Scrivi dati su OneDrive Sheet utilizzando Microsoft Graph API e PHP