{"id":26050,"date":"2021-06-19T17:54:00","date_gmt":"2021-06-19T14:54:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26050"},"modified":"2021-10-17T20:14:49","modified_gmt":"2021-10-17T17:14:49","slug":"kuinka-luoda-kokous-zoomilla-kayttamalla-zoom-api-ta-ja-php-ta","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/kuinka-luoda-kokous-zoomilla-kayttamalla-zoom-api-ta-ja-php-ta\/","title":{"rendered":"Kuinka luoda kokous Zoomilla k\u00e4ytt\u00e4m\u00e4ll\u00e4 Zoom API: ta ja PHP: t\u00e4"},"content":{"rendered":"<p>Viime aikoina ty\u00f6skentelin projektissa, jossa minun piti olla vuorovaikutuksessa Zoom-sovellusliittym\u00e4n kanssa. Asiakkaan sovelluksessa toteutimme paljon asioita Zoom-sovellusliittym\u00e4n avulla, kuten tilit, laskutus, kokoukset, ryhm\u00e4t, raportit, huoneet jne. Vaikka teimme paljon asioita Zoom-sovellusliittym\u00e4n avulla, t\u00e4ss\u00e4 opetusohjelmassa keskityn siihen, miten luo kokous Zoom API: n ja PHP: n avulla.<\/p>\n<p>Kuten me kaikki tied\u00e4mme, <a href=\"https:\/\/zoom.us\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Zoom<\/a> on alusta, jota k\u00e4ytet\u00e4\u00e4n puhelinneuvotteluissa, et\u00e4ty\u00f6ss\u00e4, et\u00e4opetuksessa jne. Se on suosittu ihmisten keskuudessa online-konferensseissa, kokouksissa, webinaareissa ja muissa asioissa.<\/p>\n<p>Niiden, jotka haluavat luoda kokouksen Zoom-sovellusliittym\u00e4n 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\u00e4ss\u00e4 opetusohjelmassa k\u00e4yt\u00e4mme OAuth-prosessia ja kommunikoimme sen kautta Zoom-sovellusliittym\u00e4n kanssa.<\/p>\n<p>Voit my\u00f6s tarkistaa opetusohjelman <a href=\"https:\/\/themewp.inform.click\/fi\/zoom-kokousten-luominen-php-n-ja-jwt-n-avulla\/\" title=\"Zoom-integraation JWT: n kanssa PHP: ss\u00e4\">Zoom-integraation JWT: n kanssa PHP: ss\u00e4<\/a>.<\/p>\n<h3>Luo OAuth-sovellus zoomauksessa<\/h3>\n<p>Kun sinulla on Zoom-tili, sinun on luotava OAuth-sovellus Zoomiin alla olevien ohjeiden avulla.<\/p>\n<ul>\n<li><a href=\"https:\/\/marketplace.zoom.us\/docs\/guides\/build\/oauth-app\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Rekister\u00f6i sovelluksesi<\/a> Zoom APP Marketplacessa.<\/li>\n<li>Kun rekister\u00f6it sovelluksen, saat luomasi kirjautumistiedot. T\u00e4\u00e4ll\u00e4 sinun on v\u00e4litett\u00e4v\u00e4 OAuth- ja sallittujen URL-osoitteiden uudelleenohjaus-URL.<\/li>\n<li>Anna seuraavassa vaiheessa sovelluksesi perustiedot.<\/li>\n<li>V\u00e4lilehdell\u00e4 voit vaihtoehtoisesti ottaa k\u00e4ytt\u00f6\u00f6n joitain lis\u00e4ominaisuuksia, kuten Tapahtumatilaukset ja Chat-tilaukset sovelluksellesi.<\/li>\n<li>Laajuudet-v\u00e4lilehdess\u00e4 sinun on lis\u00e4tt\u00e4v\u00e4 sovelluksesi laajuuksia. Voit esimerkiksi lis\u00e4t\u00e4 laajuuden Zoom-kokouksiin.<\/li>\n<\/ul>\n<p>Jos olet localhostissa, k\u00e4yt\u00e4 <a href=\"https:\/\/ngrok.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ngrokia<\/a> ja luo paikallinen URL. Minun tapauksessani ngrok-URL-osoitteet OAuth-uudelleenohjaukselle ja sallittujen luettelon URL-osoitteet ovat alla esitetyt.<\/p>\n<p>Jos sinulla on ongelmia OAuth-sovelluksen luomisessa, tutustu Zoomin virallisiin <a href=\"https:\/\/marketplace.zoom.us\/docs\/guides\/build\/oauth-app\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ohjeisiin OAuth-sovelluksen luominen -osiossa<\/a>.<\/p>\n<h3>Perusasetukset<\/h3>\n<p>En l\u00f6yt\u00e4nyt PHP-kirjastoa, jota voidaan k\u00e4ytt\u00e4\u00e4 vuorovaikutuksessa Zoom-sovellusliittym\u00e4n kanssa. Tehdess\u00e4ni tutkimusta pystyn hallitsemaan sit\u00e4 Guzzlen kirjaston ja Zoom REST -sovellusliittym\u00e4n kautta. Asenna Guzzle-kirjasto komennolla:<\/p>\n<pre><code>composer require guzzlehttp\/guzzle<\/code><\/pre>\n<p>Jos haluat k\u00e4ytt\u00e4\u00e4 Zoom REST -sovellusliittym\u00e4\u00e4, sinun on l\u00e4hetett\u00e4v\u00e4 k\u00e4ytt\u00f6oikeustunnus. Aiomme luoda sen ja tallentaa sen tietokantaan. K\u00e4ytt\u00f6oikeustunnus on voimassa lyhyen ajan. Koodissamme uudistamme k\u00e4ytt\u00f6oikeustunnuksen taustalla, jotta k\u00e4ytt\u00e4j\u00e4n ei tarvitse tehd\u00e4 valtuutusprosessia uudelleen.<\/p>\n<pre><code>CREATE TABLE `token` (\u00a0`id` int(11) NOT NULL AUTO_INCREMENT,\n\u00a0`access_token` text NOT NULL,\n\u00a0PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;<\/code><\/pre>\n<p>Koska meid\u00e4n on haettava tunnusluvut tietokannasta, meid\u00e4n on kirjoitettava sille koodi. Luo tiedosto <code>class-db.php<\/code>ja lis\u00e4\u00e4 siihen alla oleva koodi.<\/p>\n<p><strong>luokka-db.php<\/strong><\/p>\n<pre><code>&lt;?php\nclass DB {\n\u00a0\u00a0\u00a0\u00a0private $dbHost\u00a0\u00a0\u00a0\u00a0 = \"DB_HOST\";\n\u00a0\u00a0\u00a0\u00a0private $dbUsername = \"DB_USERNAME\";\n\u00a0\u00a0\u00a0\u00a0private $dbPassword = \"DB_PASSWORD\";\n\u00a0\u00a0\u00a0\u00a0private $dbName\u00a0\u00a0\u00a0\u00a0 = \"DB_NAME\";\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function __construct(){\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(!isset($this-&gt;db)){\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Connect to the database\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$conn = new mysqli($this-&gt;dbHost, $this-&gt;dbUsername, $this-&gt;dbPassword, $this-&gt;dbName);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if($conn-&gt;connect_error){\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0die(\"Failed to connect with MySQL: \". $conn-&gt;connect_error);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}else{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;db = $conn;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function is_table_empty() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$result = $this-&gt;db-&gt;query(\"SELECT id FROM token\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if($result-&gt;num_rows) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return false;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return true;\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function get_access_token() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$sql = $this-&gt;db-&gt;query(\"SELECT access_token FROM token\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$result = $sql-&gt;fetch_assoc();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return json_decode($result['access_token']);\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function get_refersh_token() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$result = $this-&gt;get_access_token();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return $result-&gt;refresh_token;\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function update_access_token($token) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if($this-&gt;is_table_empty()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;db-&gt;query(\"INSERT INTO token(access_token) VALUES('$token')\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;db-&gt;query(\"UPDATE token SET access_token = '$token' WHERE id = (SELECT id FROM token)\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Muista korvata paikkamerkit todellisilla tietokannan tunnistetiedoilla. Seuraavaksi luodaan k\u00e4ytt\u00f6oikeustunnus OAuth-prosessin kautta.<\/p>\n<h3>Luo k\u00e4ytt\u00f6oikeustunnus<\/h3>\n<p>K\u00e4ytt\u00e4j\u00e4 voi luoda k\u00e4ytt\u00f6tunnuksen tililleen App-tunnistetietojen ja OAuth-prosessin avulla. Luo <code>config.php<\/code>tiedosto, tallenna sovelluksen tunnistetiedot ja ohjaa URL-osoite t\u00e4h\u00e4n PHP-tiedostoon. Sis\u00e4llyt\u00e4 muut ymp\u00e4rist\u00f6t, kuten DB-luokka ja toimittajakirjasto, my\u00f6s seuraavasti.<\/p>\n<p><strong>config.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once 'vendor\/autoload.php';\nrequire_once \"class-db.php\";\n\u00a0\u00a0\ndefine('CLIENT_ID', 'YOUR_CLIENT_ID');\ndefine('CLIENT_SECRET', 'YOUR_CLIENT_SECRET');\ndefine('REDIRECT_URI', 'REDIRECT_URL_FOR_OAUTH');<\/code><\/pre>\n<p>Korvaa paikkamerkit sovellustiedoillasi ja m\u00e4\u00e4rit\u00e4 sama uudelleenohjaus-URL, jonka lis\u00e4sit Zoom OAuth -sovelluksessa. Minun tapauksessani uudelleenohjauksen URL on <code>https:\/\/f2448150.ngrok.io\/zoom\/callback.php<\/code>. Se tarkoittaa <code>callback.php<\/code>tiedostossa, ett\u00e4 meid\u00e4n on kirjoitettava koodi, joka kutsuu Zoom-sovellusliittym\u00e4\u00e4, pyyt\u00e4nyt k\u00e4ytt\u00f6oikeustunnusta ja tallennettava se tietokantaan.<\/p>\n<p><strong>callback.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once 'config.php';\n\u00a0\u00a0\ntry {\n\u00a0\u00a0\u00a0\u00a0$client = new GuzzleHttpClient(['base_uri' =&gt; 'https:\/\/zoom.us']);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$response = $client-&gt;request('POST', '\/oauth\/token', [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"headers\" =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"Authorization\" =&gt; \"Basic \". base64_encode(CLIENT_ID.':'.CLIENT_SECRET)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'form_params' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"grant_type\" =&gt; \"authorization_code\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"code\" =&gt; $_GET['code'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"redirect_uri\" =&gt; REDIRECT_URI\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$token = json_decode($response-&gt;getBody()-&gt;getContents(), true);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$db = new DB();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0if($db-&gt;is_table_empty()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$db-&gt;update_access_token(json_encode($token));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Access token inserted successfully.\";\n\u00a0\u00a0\u00a0\u00a0}\n} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n}<\/code><\/pre>\n<p>Luodaan nyt valtuutettu URL, jossa k\u00e4ytt\u00e4j\u00e4 voi napsauttaa ja suorittaa valtuutusprosessin loppuun. Aion luoda t\u00e4m\u00e4n URL-osoitteen <code>index.php<\/code>tiedostoon.<\/p>\n<p><strong>index.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once 'config.php';\n\u00a0\u00a0\n$url = \"https:\/\/zoom.us\/oauth\/authorize?response_type=code&amp;client_id=\".CLIENT_ID.\"&amp;redirect_uri=\".REDIRECT_URI;\n?&gt;\n\u00a0\u00a0\n&lt;a href=\"&lt;?php echo $url; ?&gt;\"&gt;Login with Zoom&lt;\/a&gt;<\/code><\/pre>\n<p>Suorita yll\u00e4 oleva tiedosto selaimessa, napsauta &#8217;Kirjaudu sis\u00e4\u00e4n zoomauksella&#8217; -linkki\u00e4 ja suorita valtuutusprosessi loppuun. Onnistuneen todennuksen yhteydess\u00e4 sinun pit\u00e4isi n\u00e4hd\u00e4 onnistumisviesti ja k\u00e4ytt\u00f6oikeustunnus tallennetaan <code>token<\/code>taulukkoon. Jos se toimii, voimme menn\u00e4 eteenp\u00e4in ja luoda kokouksen Zoom-sovellusliittym\u00e4n kanssa.<\/p>\n<h3>Luo kokous Zoomilla Zoom API: n avulla<\/h3>\n<p>Zoom tarjoaa p\u00e4\u00e4tepisteen kokouksen luomiseen REST-sovellusliittym\u00e4n kautta. Voit lukea siit\u00e4 heid\u00e4n <a href=\"https:\/\/marketplace.zoom.us\/docs\/api-reference\/zoom-api\/meetings\/meetingcreate\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">asiakirjoistaan<\/a>. Se vaatii POST-pyynn\u00f6n l\u00e4hett\u00e4misen annetulle p\u00e4\u00e4tepisteelle yhdess\u00e4 vaadittujen parametrien kanssa.<\/p>\n<p>API-p\u00e4\u00e4tepiste vaatii my\u00f6s k\u00e4ytt\u00f6oikeustunnuksen v\u00e4litt\u00e4misen Valtuutus-otsikossa. Kuten sanoin aiemmin, k\u00e4ytt\u00f6oikeustunnuksella on lyhyt k\u00e4ytt\u00f6ik\u00e4, ja aiomme uudistaa sen taustalla pyyt\u00e4m\u00e4tt\u00e4 uudelleen todennusprosessia.<\/p>\n<p>Olen luonut <code>create-meeting.php<\/code>tiedoston POST-pyynn\u00f6n l\u00e4hett\u00e4mist\u00e4 p\u00e4\u00e4tepisteeseen. K\u00e4sittelin my\u00f6s tunnuksen vanhentumisen ehdon ja uudistin sen, jos se vanhentui.<\/p>\n<p><strong>create-meeting.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once 'config.php';\n\u00a0\u00a0\nfunction create_meeting() {\n\u00a0\u00a0\u00a0\u00a0$client = new GuzzleHttpClient(['base_uri' =&gt; 'https:\/\/api.zoom.us']);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$db = new DB();\n\u00a0\u00a0\u00a0\u00a0$arr_token = $db-&gt;get_access_token();\n\u00a0\u00a0\u00a0\u00a0$accessToken = $arr_token-&gt;access_token;\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $client-&gt;request('POST', '\/v2\/users\/me\/meetings', [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"headers\" =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"Authorization\" =&gt; \"Bearer $accessToken\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'json' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"topic\" =&gt; \"Let's learn Laravel\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"type\" =&gt; 2,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"start_time\" =&gt; \"2021-03-05T20:30:00\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"duration\" =&gt; \"30\", \/\/ 30 mins\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"password\" =&gt; \"123456\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data = json_decode($response-&gt;getBody());\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Join URL: \". $data-&gt;join_url;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"&lt;br&gt;\";\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Meeting Password: \". $data-&gt;password;\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if( 401 == $e-&gt;getCode()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$refresh_token = $db-&gt;get_refersh_token();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$client = new GuzzleHttpClient(['base_uri' =&gt; 'https:\/\/zoom.us']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $client-&gt;request('POST', '\/oauth\/token', [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"headers\" =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"Authorization\" =&gt; \"Basic \". base64_encode(CLIENT_ID.':'.CLIENT_SECRET)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'form_params' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"grant_type\" =&gt; \"refresh_token\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"refresh_token\" =&gt; $refresh_token\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$db-&gt;update_access_token($response-&gt;getBody());\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0create_meeting();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}\n\u00a0\u00a0\ncreate_meeting();<\/code><\/pre>\n<p>Jos huomasit koodin, olen l\u00e4p\u00e4issyt &quot;2021-03-20T20: 30: 00&quot; alkamisajana. Se tarkoittaa, ett\u00e4 kokousaika on 20. maaliskuuta 2021 klo 20.30. K\u00e4ytt\u00e4j\u00e4n tulisi v\u00e4litt\u00e4\u00e4 sen muoto muodossa vvvv-kk-ppHK: kp: ss. &quot;type&quot; -avaimelle v\u00e4litin arvon &quot;2&quot;, joka on ajastetulle kokoukselle. K\u00e4ytt\u00e4j\u00e4n on my\u00f6s asetettava kokoussalasana, jonka asetan arvoon &quot;123456&quot;.<\/p>\n<p>Suorita t\u00e4m\u00e4 koodi, niin sinun pit\u00e4isi n\u00e4hd\u00e4, ett\u00e4 kokous on luotu Zoom-tilillesi.<\/p>\n<h3>Luettelo Zoom-kokouksista<\/h3>\n<p>Olemme kirjoittaneet koodin Zoom-kokousten luomista varten. T\u00e4m\u00e4n koodin avulla voit luoda niin monta kokousta kuin haluat. T\u00e4m\u00e4n j\u00e4lkeen haluat ehk\u00e4 luetella kaikki kokoukset sovelluksessasi.<\/p>\n<p>Zoom tarjoaa API: n, jonka kautta voimme noutaa kaikki Zoom-kokouksemme. Luo tiedosto <code>list-meeting.php<\/code>ja k\u00e4yt\u00e4 alla olevaa koodia, joka tulostaa kaikki kokoukset.<\/p>\n<p><strong>list-meeting.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once 'config.php';\n\u00a0\u00a0\n$client = new GuzzleHttpClient(['base_uri' =&gt; 'https:\/\/api.zoom.us']);\n\u00a0\u00a0\n$db = new DB();\n$arr_token = $db-&gt;get_access_token();\n$accessToken = $arr_token-&gt;access_token;\n\u00a0\u00a0\n$response = $client-&gt;request('GET', '\/v2\/users\/me\/meetings', [\n\u00a0\u00a0\u00a0\u00a0\"headers\" =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"Authorization\" =&gt; \"Bearer $accessToken\"\n\u00a0\u00a0\u00a0\u00a0]\n]);\n\u00a0\n$data = json_decode($response-&gt;getBody());\n\u00a0\nif (!empty($data)) {\n\u00a0\u00a0\u00a0\u00a0foreach ($data-&gt;meetings as $d) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$topic = $d-&gt;topic;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$join_url = $d-&gt;join_url;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"&lt;h3&gt;Topic: $topic&lt;\/h3&gt;\";\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Join URL: $join_url\";\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Tulostan yll\u00e4 olevaan koodiin aiheen ja kokousten URL-osoitteet. Voit tulostaa my\u00f6s muita tietoja. Tulosta muuttuja <code>$data<\/code>saadaksesi luettelon k\u00e4ytett\u00e4viss\u00e4 olevista tiedoista.<\/p>\n<h3>Hanki aiemmat kokouksen osallistujat<\/h3>\n<p>Kun kokous on ohi, voit saada luettelon osallistujista Zoom-sovellusliittym\u00e4n avulla. On suositeltavaa kutsua t\u00e4t\u00e4 sovellusliittym\u00e4\u00e4 vain, jos olet maksullisella tilill\u00e4. T\u00e4ll\u00e4 erityisell\u00e4 sovellusliittym\u00e4ll\u00e4 on oltava maksettu tili. Jos yrit\u00e4t soittaa t\u00e4h\u00e4n sovellusliittym\u00e4\u00e4n ilmaisella tilill\u00e4, saat virheilmoituksen.<\/p>\n<pre><code>&lt;?php\nrequire_once 'config.php';\n\u00a0\u00a0\u00a0\n$client = new GuzzleHttpClient(['base_uri' =&gt; 'https:\/\/api.zoom.us']);\n\u00a0\u00a0\u00a0\n$db = new DB();\n$arr_token = $db-&gt;get_access_token();\n$accessToken = $arr_token-&gt;access_token;\n\u00a0\u00a0\u00a0\n$response = $client-&gt;request('GET', '\/v2\/past_meetings\/MEETING_ID\/participants', [\n\u00a0\u00a0\u00a0\u00a0\"headers\" =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"Authorization\" =&gt; \"Bearer $accessToken\"\n\u00a0\u00a0\u00a0\u00a0]\n]);\n\u00a0\u00a0\n$data = json_decode($response-&gt;getBody());\nif (!empty($data)) {\n\u00a0\u00a0\u00a0\u00a0foreach ($data-&gt;participants as $p) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$name = $p-&gt;name;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$email = $p-&gt;user_email;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Name: $name\";\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Email: $email\";\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Korvaa paikkamerkki MEETING_ID todellisella edellisen kokouksen tunnuksella. Vastauksessa saat osallistujien nimet ja s\u00e4hk\u00f6postit.<\/p>\n<h3>Poista kokous<\/h3>\n<p>K\u00e4ytt\u00e4j\u00e4 voi pelata Zoom-sovellusliittym\u00e4n p\u00e4\u00e4tepisteill\u00e4, kuten luettelo, p\u00e4ivitys ja kokouksen poisto. Sinun tarvitsee vain noudattaa heid\u00e4n ohjeita tiettyjen p\u00e4\u00e4tepisteiden k\u00e4yt\u00f6st\u00e4. Voit esimerkiksi poistaa kokouksen l\u00e4hett\u00e4m\u00e4ll\u00e4 DELETE-pyynn\u00f6n API-p\u00e4\u00e4tepisteelle. T\u00e4h\u00e4n p\u00e4\u00e4tepisteeseen sinun on v\u00e4litett\u00e4v\u00e4 kokoustunnuksesi alla olevan kuvan mukaisesti.<\/p>\n<pre><code>&lt;?php\nrequire_once 'config.php';\n\u00a0\u00a0\n$client = new GuzzleHttpClient(['base_uri' =&gt; 'https:\/\/api.zoom.us']);\n\u00a0\u00a0\n$db = new DB();\n$arr_token = $db-&gt;get_access_token();\n$accessToken = $arr_token-&gt;access_token;\n\u00a0\u00a0\n$response = $client-&gt;request('DELETE', '\/v2\/meetings\/{meeting_id}', [\n\u00a0\u00a0\u00a0\u00a0\"headers\" =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"Authorization\" =&gt; \"Bearer $accessToken\"\n\u00a0\u00a0\u00a0\u00a0]\n]);\n\u00a0\nif (204 == $response-&gt;getStatusCode()) {\n\u00a0\u00a0\u00a0\u00a0echo \"Meeting is deleted.\";\n}<\/code><\/pre>\n<p>Toivon, ett\u00e4 sait tiet\u00e4\u00e4 kuinka luoda kokous Zoom API: n ja PHP: n avulla. Haluaisin kuulla ajatuksesi ja ehdotuksesi alla olevassa kommenttiosassa.<\/p>\n<h4>Aiheeseen liittyv\u00e4t artikkelit<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-kayttaa-youtube-sovellusliittymaa-videon-lataamiseen-youtube-kanavalle\/\" title=\"Kuinka k\u00e4ytt\u00e4\u00e4 YouTube-sovellusliittym\u00e4\u00e4 videon lataamiseen YouTube-kanavalle\">Kuinka k\u00e4ytt\u00e4\u00e4 YouTube-sovellusliittym\u00e4\u00e4 videon lataamiseen YouTube-kanavalle<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-kayttaa-guzzlea-php-http-asiakas-http-pyyntojen-lahettamiseen\/\" title=\"Kuinka k\u00e4ytt\u00e4\u00e4 Guzzlea HTTP-pyynt\u00f6jen l\u00e4hett\u00e4miseen\">Kuinka k\u00e4ytt\u00e4\u00e4 Guzzlea HTTP-pyynt\u00f6jen l\u00e4hett\u00e4miseen<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kirjoita-tiedot-onedrive-taulukkoon-microsoft-graph-api-n-ja-php-n-avulla\/\" title=\"Kirjoita tiedot OneDrive-taulukkoon Microsoft Graph -sovellusliittym\u00e4n ja PHP: n avulla\">Kirjoita tiedot OneDrive-taulukkoon Microsoft Graph -sovellusliittym\u00e4n ja PHP: n avulla<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Haluatko luoda kokouksen Zoomissa Zoom API: n ja PHP: n avulla? T\u00e4ss\u00e4 artikkelissa selit\u00e4n, miten olla vuorovaikutuksessa Zoom API: n kanssa ja luoda<\/p>\n","protected":false},"author":1,"featured_media":20151,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[275],"tags":[843],"class_list":["post-26050","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-6","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/26050","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/comments?post=26050"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/26050\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/20151"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=26050"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=26050"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=26050"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}