Kuinka luoda kokous Zoomilla käyttämällä Zoom API: ta ja PHP: tä
Viime aikoina työskentelin projektissa, jossa minun piti olla vuorovaikutuksessa Zoom-sovellusliittymän kanssa. Asiakkaan sovelluksessa toteutimme paljon asioita Zoom-sovellusliittymän avulla, kuten tilit, laskutus, kokoukset, ryhmät, raportit, huoneet jne. Vaikka teimme paljon asioita Zoom-sovellusliittymän avulla, tässä opetusohjelmassa keskityn siihen, miten luo kokous Zoom API: n ja PHP: n avulla.
Kuten me kaikki tiedämme, Zoom on alusta, jota käytetään puhelinneuvotteluissa, etätyössä, etäopetuksessa jne. Se on suosittu ihmisten keskuudessa online-konferensseissa, kokouksissa, webinaareissa ja muissa asioissa.
Niiden, jotka haluavat luoda kokouksen Zoom-sovellusliittymän kautta, on valittava joko OAuth tai JWT vuorovaikutuksessa API: nsa kanssa. OAuth ja JWT (JSON-verkkotunnus) tarjoavat korkean suojaustason vuorovaikutuksessa kolmansien osapuolten palveluiden kanssa. Tässä opetusohjelmassa käytämme OAuth-prosessia ja kommunikoimme sen kautta Zoom-sovellusliittymän kanssa.
Voit myös tarkistaa opetusohjelman Zoom-integraation JWT: n kanssa PHP: ssä.
Luo OAuth-sovellus zoomauksessa
Kun sinulla on Zoom-tili, sinun on luotava OAuth-sovellus Zoomiin alla olevien ohjeiden avulla.
- Rekisteröi sovelluksesi Zoom APP Marketplacessa.
- Kun rekisteröit sovelluksen, saat luomasi kirjautumistiedot. Täällä sinun on välitettävä OAuth- ja sallittujen URL-osoitteiden uudelleenohjaus-URL.
- Anna seuraavassa vaiheessa sovelluksesi perustiedot.
- Välilehdellä voit vaihtoehtoisesti ottaa käyttöön joitain lisäominaisuuksia, kuten Tapahtumatilaukset ja Chat-tilaukset sovelluksellesi.
- Laajuudet-välilehdessä sinun on lisättävä sovelluksesi laajuuksia. Voit esimerkiksi lisätä laajuuden Zoom-kokouksiin.
Jos olet localhostissa, käytä ngrokia ja luo paikallinen URL. Minun tapauksessani ngrok-URL-osoitteet OAuth-uudelleenohjaukselle ja sallittujen luettelon URL-osoitteet ovat alla esitetyt.
Jos sinulla on ongelmia OAuth-sovelluksen luomisessa, tutustu Zoomin virallisiin ohjeisiin OAuth-sovelluksen luominen -osiossa.
Perusasetukset
En löytänyt PHP-kirjastoa, jota voidaan käyttää vuorovaikutuksessa Zoom-sovellusliittymän kanssa. Tehdessäni tutkimusta pystyn hallitsemaan sitä Guzzlen kirjaston ja Zoom REST -sovellusliittymän kautta. Asenna Guzzle-kirjasto komennolla:
composer require guzzlehttp/guzzle
Jos haluat käyttää Zoom REST -sovellusliittymää, sinun on lähetettävä käyttöoikeustunnus. Aiomme luoda sen ja tallentaa sen tietokantaan. Käyttöoikeustunnus on voimassa lyhyen ajan. Koodissamme uudistamme käyttöoikeustunnuksen taustalla, jotta käyttäjän ei tarvitse tehdä valtuutusprosessia uudelleen.
CREATE TABLE `token` ( `id` int(11) NOT NULL AUTO_INCREMENT,
`access_token` text NOT NULL,
PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Koska meidän on haettava tunnusluvut tietokannasta, meidän on kirjoitettava sille koodi. Luo tiedosto class-db.php
ja lisää siihen alla oleva koodi.
luokka-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)");
}
}
}
Muista korvata paikkamerkit todellisilla tietokannan tunnistetiedoilla. Seuraavaksi luodaan käyttöoikeustunnus OAuth-prosessin kautta.
Luo käyttöoikeustunnus
Käyttäjä voi luoda käyttötunnuksen tililleen App-tunnistetietojen ja OAuth-prosessin avulla. Luo config.php
tiedosto, tallenna sovelluksen tunnistetiedot ja ohjaa URL-osoite tähän PHP-tiedostoon. Sisällytä muut ympäristöt, kuten DB-luokka ja toimittajakirjasto, myös seuraavasti.
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');
Korvaa paikkamerkit sovellustiedoillasi ja määritä sama uudelleenohjaus-URL, jonka lisäsit Zoom OAuth -sovelluksessa. Minun tapauksessani uudelleenohjauksen URL on https://f2448150.ngrok.io/zoom/callback.php
. Se tarkoittaa callback.php
tiedostossa, että meidän on kirjoitettava koodi, joka kutsuu Zoom-sovellusliittymää, pyytänyt käyttöoikeustunnusta ja tallennettava se tietokantaan.
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();
}
Luodaan nyt valtuutettu URL, jossa käyttäjä voi napsauttaa ja suorittaa valtuutusprosessin loppuun. Aion luoda tämän URL-osoitteen index.php
tiedostoon.
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>
Suorita yllä oleva tiedosto selaimessa, napsauta ‘Kirjaudu sisään zoomauksella’ -linkkiä ja suorita valtuutusprosessi loppuun. Onnistuneen todennuksen yhteydessä sinun pitäisi nähdä onnistumisviesti ja käyttöoikeustunnus tallennetaan token
taulukkoon. Jos se toimii, voimme mennä eteenpäin ja luoda kokouksen Zoom-sovellusliittymän kanssa.
Luo kokous Zoomilla Zoom API: n avulla
Zoom tarjoaa päätepisteen kokouksen luomiseen REST-sovellusliittymän kautta. Voit lukea siitä heidän asiakirjoistaan. Se vaatii POST-pyynnön lähettämisen annetulle päätepisteelle yhdessä vaadittujen parametrien kanssa.
API-päätepiste vaatii myös käyttöoikeustunnuksen välittämisen Valtuutus-otsikossa. Kuten sanoin aiemmin, käyttöoikeustunnuksella on lyhyt käyttöikä, ja aiomme uudistaa sen taustalla pyytämättä uudelleen todennusprosessia.
Olen luonut create-meeting.php
tiedoston POST-pyynnön lähettämistä päätepisteeseen. Käsittelin myös tunnuksen vanhentumisen ehdon ja uudistin sen, jos se vanhentui.
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();
Jos huomasit koodin, olen läpäissyt "2021-03-20T20: 30: 00" alkamisajana. Se tarkoittaa, että kokousaika on 20. maaliskuuta 2021 klo 20.30. Käyttäjän tulisi välittää sen muoto muodossa vvvv-kk-ppHK: kp: ss. "type" -avaimelle välitin arvon "2", joka on ajastetulle kokoukselle. Käyttäjän on myös asetettava kokoussalasana, jonka asetan arvoon "123456".
Suorita tämä koodi, niin sinun pitäisi nähdä, että kokous on luotu Zoom-tilillesi.
Luettelo Zoom-kokouksista
Olemme kirjoittaneet koodin Zoom-kokousten luomista varten. Tämän koodin avulla voit luoda niin monta kokousta kuin haluat. Tämän jälkeen haluat ehkä luetella kaikki kokoukset sovelluksessasi.
Zoom tarjoaa API: n, jonka kautta voimme noutaa kaikki Zoom-kokouksemme. Luo tiedosto list-meeting.php
ja käytä alla olevaa koodia, joka tulostaa kaikki kokoukset.
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";
}
}
Tulostan yllä olevaan koodiin aiheen ja kokousten URL-osoitteet. Voit tulostaa myös muita tietoja. Tulosta muuttuja $data
saadaksesi luettelon käytettävissä olevista tiedoista.
Hanki aiemmat kokouksen osallistujat
Kun kokous on ohi, voit saada luettelon osallistujista Zoom-sovellusliittymän avulla. On suositeltavaa kutsua tätä sovellusliittymää vain, jos olet maksullisella tilillä. Tällä erityisellä sovellusliittymällä on oltava maksettu tili. Jos yrität soittaa tähän sovellusliittymään ilmaisella tilillä, saat virheilmoituksen.
<?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";
}
}
Korvaa paikkamerkki MEETING_ID todellisella edellisen kokouksen tunnuksella. Vastauksessa saat osallistujien nimet ja sähköpostit.
Poista kokous
Käyttäjä voi pelata Zoom-sovellusliittymän päätepisteillä, kuten luettelo, päivitys ja kokouksen poisto. Sinun tarvitsee vain noudattaa heidän ohjeita tiettyjen päätepisteiden käytöstä. Voit esimerkiksi poistaa kokouksen lähettämällä DELETE-pyynnön API-päätepisteelle. Tähän päätepisteeseen sinun on välitettävä kokoustunnuksesi alla olevan kuvan mukaisesti.
<?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.";
}
Toivon, että sait tietää kuinka luoda kokous Zoom API: n ja PHP: n avulla. Haluaisin kuulla ajatuksesi ja ehdotuksesi alla olevassa kommenttiosassa.