{"id":26399,"date":"2021-06-19T18:06:00","date_gmt":"2021-06-19T15:06:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26399"},"modified":"2021-10-17T18:14:59","modified_gmt":"2021-10-17T15:14:59","slug":"zoomi-abil-koosoleku-loomine-zoomi-api-ja-php-abil","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/et\/zoomi-abil-koosoleku-loomine-zoomi-api-ja-php-abil\/","title":{"rendered":"Zoomi abil koosoleku loomine Zoomi API ja PHP abil"},"content":{"rendered":"<p>Hiljuti t\u00f6\u00f6tasin projektiga, kus mul oli vaja suhelda Zoom API-ga. Kliendi rakenduses juurutasime Zoom API abil palju asju, n\u00e4iteks Kontod, Arveldamine, Koosolekud, Grupid, Aruanded, Toad jne. Kuigi me tegime Zoom API abil palju asju, keskendun selles \u00f5petuses sellele, kuidas looge koosolek Zoom API ja PHP abil.<\/p>\n<p>Nagu me k\u00f5ik teame, on <a href=\"https:\/\/zoom.us\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Zoom<\/a> platvorm, mida kasutatakse telekonverentside, kaugt\u00f6\u00f6, kaug\u00f5ppe jms jaoks. See on inimeste seas populaarne veebikonverentside, koosolekute, veebiseminaride ja muu jaoks.<\/p>\n<p>Need, kes otsivad koosoleku loomist Zoom API kaudu, peavad oma API-dega suhtlemiseks valima kas OAuthi v\u00f5i JWT. OAuth ja JWT (JSON-i veebim\u00e4rgis) tagavad kolmanda osapoole teenustega suhtlemiseks k\u00f5rge turvalisuse taseme. Selles \u00f5petuses kasutame OAuthi protsessi ja suhtleme selle kaudu Zoom API-ga.<\/p>\n<p>Samuti v\u00f5ite kontrollida <a href=\"https:\/\/themewp.inform.click\/et\/kuidas-luua-suumikoosolekuid-php-ja-jwt-abil\/\" title=\"PHP-s\">PHP-s<\/a> olevat \u00f5petust <a href=\"https:\/\/themewp.inform.click\/et\/kuidas-luua-suumikoosolekuid-php-ja-jwt-abil\/\" title=\"Suumi integreerimine JWT-ga\">Suumi integreerimine JWT-ga<\/a>.<\/p>\n<h3>Looge suumil OAuthi rakendus<\/h3>\n<p>Kui olete oma suumikonto saanud, peate alltoodud sammude abil Zoomis looma OAuthi rakenduse.<\/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\">Registreerige oma rakendus<\/a> Zoom APP Marketplace&#8217;is.<\/li>\n<li>Rakenduse registreerimisel saate oma loodud volitused. Siin peate edastama OAuthi ja lubatud loendi URL-i \u00fcmbersuunamise URL-i.<\/li>\n<li>J\u00e4rgmisel sammul sisestage oma rakenduse p\u00f5hiteave.<\/li>\n<li>Vahekaardil saate oma rakenduse jaoks lubada lisafunktsioone, n\u00e4iteks s\u00fcndmuste tellimused ja vestluste tellimused.<\/li>\n<li>Vahekaardil \u201eReguleerimisala&quot; peate lisama oma rakendusega seotud ulatused. N\u00e4iteks saate lisada suumi koosolekute ulatuse.<\/li>\n<\/ul>\n<p>Kui olete localhostis, siis kasutage <a href=\"https:\/\/ngrok.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ngrokit<\/a> ja genereerige kohalik URL. Minu puhul on ngroki URL-id OAuthi \u00fcmbersuunamiseks ja lubatud loendi URL-id allpool n\u00e4idatud.<\/p>\n<p>Kui teil on OAuthi rakenduse loomisega probleeme, vaadake Zoomi ametlikku dokumentatsiooni teemal <a href=\"https:\/\/marketplace.zoom.us\/docs\/guides\/build\/oauth-app\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">OAuthi rakenduse loomine<\/a>.<\/p>\n<h3>P\u00f5hiline seadistamine ja seadistamine<\/h3>\n<p>Ma ei leidnud \u00fchtegi PHP-teeki, mida saaks kasutada Zoom API-ga suhtlemiseks. Uurides saan seda hallata l\u00e4bi Guzzle&#8217;i teegi ja Zoom REST API. Installige Guzzle&#8217;i teek k\u00e4suga:<\/p>\n<pre><code>composer require guzzlehttp\/guzzle<\/code><\/pre>\n<p>Zoom REST API-ga suhtlemiseks on vaja juurdep\u00e4\u00e4suloa saatmist. Kavatseme selle genereerida ja andmebaasi salvestada. Juurdep\u00e4\u00e4suluba kehtib l\u00fchikest aega. Meie koodis taastame juurdep\u00e4\u00e4suloa taustal, nii et kasutajal pole vaja autoriseerimisprotsessi uuesti teha.<\/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>Kuna peame andmebaasist loa v\u00e4\u00e4rtuste tooma, peame selle jaoks kirjutama koodi. Looge fail <code>class-db.php<\/code>ja lisage sellesse allolev kood.<\/p>\n<p><strong>klass-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>Asendage kohat\u00e4ited kindlasti oma tegelike andmebaasi mandaatidega. J\u00e4rgmisena genereerime OAuthi protsessi kaudu juurdep\u00e4\u00e4suloa.<\/p>\n<h3>Looge juurdep\u00e4\u00e4suluba<\/h3>\n<p>Kasutaja saab rakenduse mandaatide ja OAuthi protsessi abil luua oma kontole juurdep\u00e4\u00e4suloa. Looge <code>config.php<\/code>selles PHP-failis fail, salvestage rakenduse mandaadid ja suunake URL \u00fcmber. Lisage ka muud keskkonnad, nagu DB klass ja hankija kogu, j\u00e4rgmiselt.<\/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>Asendage kohat\u00e4ited oma rakenduse mandaatidega ja m\u00e4\u00e4rake sama \u00fcmbersuunamise URL, mille lisasite rakenduses Zoom OAuth. Minu puhul on \u00fcmbersuunamise URL <code>https:\/\/f2448150.ngrok.io\/zoom\/callback.php<\/code>. See t\u00e4hendab, et <code>callback.php<\/code>failis peame kirjutama koodi, mis kutsub suumi API-d, taotlema juurdep\u00e4\u00e4suluba ja salvestama selle andmebaasi.<\/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>N\u00fc\u00fcd genereerime volitatud URL-i, kus kasutaja saab kl\u00f5psata ja autoriseerimisprotsessi l\u00f5pule viia. Kavatsen selle URL-i <code>index.php<\/code>faili luua .<\/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>K\u00e4ivitage \u00fclaltoodud fail brauseris, kl\u00f5psake linki &quot;Logi sisse suumiga&quot; ja viige autoriseerimisprotsess l\u00f5pule. Eduka autentimise korral peaksite n\u00e4gema edukat teadet ja p\u00e4\u00e4suluba salvestatakse teie <code>token<\/code>tabelisse. Kui see t\u00f6\u00f6tab, v\u00f5ime j\u00e4tkata ja luua koosoleku Zoom API-ga.<\/p>\n<h3>Koosoleku loomine Zoomi abil, kasutades Zoom API-d<\/h3>\n<p>Zoom pakub l\u00f5pp-punkti koosoleku loomiseks nende REST API kaudu. V\u00f5ite lugeda selle kohta nende <a href=\"https:\/\/marketplace.zoom.us\/docs\/api-reference\/zoom-api\/meetings\/meetingcreate\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentatsioonist<\/a>. See n\u00f5uab POST-p\u00e4ringu saatmist antud l\u00f5pp-punkti koos vajalike parameetritega.<\/p>\n<p>Samuti n\u00f5uab API l\u00f5pp-punkt lubamise p\u00e4ises edastamist juurdep\u00e4\u00e4suluba. Nagu ma varem \u00fctlesin, on juurdep\u00e4\u00e4suloa eluiga l\u00fchike ja me taastame selle taustal uuesti autentimisprotsessi k\u00fcsimata.<\/p>\n<p>Olen loonud <code>create-meeting.php<\/code>faili POST-p\u00e4ringu saatmiseks l\u00f5pp-punkti. Tegelesin ka m\u00e4rgise aegumise tingimusega ja selle taastamisega, kui aegumine on l\u00f5ppenud.<\/p>\n<p><strong>loo-koosolek.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>Kui m\u00e4rkasite koodi, olen algusajana l\u00e4binud &#8220;2021-03-20T20: 30: 00&#8221;. See t\u00e4hendab, et koosoleku aeg on 20. m\u00e4rts 2021 kell 20.30. Kasutaja peaks edastama selle vormingu aastal yyyy-MM-ddTHH: mm: ss. V\u00f5tme &quot;type&quot; jaoks andsin edasi v\u00e4\u00e4rtuse &quot;2&quot;, mis on m\u00f5eldud ajastatud koosoleku jaoks. Kasutaja peab m\u00e4\u00e4rama ka koosoleku parooli, mille m\u00e4\u00e4rasin v\u00e4\u00e4rtuseks &quot;123456&quot;.<\/p>\n<p>J\u00e4tkake ja k\u00e4ivitage see kood ning peaksite n\u00e4gema, et teie suumikontol on koosolek loodud.<\/p>\n<h3>Lisage koosolekute loend<\/h3>\n<p>Oleme kirjutanud koodi suumikoosolekute loomiseks. Selle koodi abil saate luua nii palju koosolekuid kui soovite. P\u00e4rast seda v\u00f5ite loendada k\u00f5ik koosolekud oma rakenduses.<\/p>\n<p>Zoom pakub API-d, mille kaudu saame tuua k\u00f5ik oma Zoom-koosolekud. Looge fail <code>list-meeting.php<\/code>ja kasutage allolevat koodi, mis printib k\u00f5ik koosolekud.<\/p>\n<p><strong>nimekiri-koosolek.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>\u00dclalolevas koodis printin koosolekute teema ja URL-i. V\u00f5ite printida ka muud teavet. <code>$data<\/code>Saadaoleva teabe loendi saamiseks printige muutuja .<\/p>\n<h3>Hankige eelmised koosolekul osalejad<\/h3>\n<p>Kui koosolek on l\u00f5ppenud, saate osalejate nimekirja, kasutades Zoom API-d. Sellele API-le on soovitatav helistada ainult siis, kui olete tasulisel kontol. Sellel konkreetsel API-l peab olema tasuline konto. Kui proovite sellele API-le helistada tasuta kontoga, kuvatakse t\u00f5rge.<\/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>Asendage kohat\u00e4ide MEETING_ID tegeliku eelmise koosoleku ID-ga. Vastuses saate osalejate nimed ja meiliaadressid.<\/p>\n<h3>Koosoleku kustutamine<\/h3>\n<p>Kasutaja saab m\u00e4ngida Zoom API l\u00f5pp-punktidega, n\u00e4iteks loendit, v\u00e4rskendada, koosolekut kustutada. K\u00f5ik, mida peate tegema, on j\u00e4rgida nende juhiseid konkreetsete l\u00f5pp-punktide kasutamiseks. N\u00e4iteks v\u00f5ite koosoleku kustutada, saates API l\u00f5pp-punktile DELETE p\u00e4ringu. Selle l\u00f5pp-punkti saamiseks peate edastama oma koosoleku ID, nagu allpool n\u00e4idatud.<\/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>Loodan, et saite teada, kuidas Zoom API ja PHP abil koosolekut luua. Tahaksin kuulda teie m\u00f5tteid ja ettepanekuid allpool olevas kommentaaride jaotises.<\/p>\n<h4>seotud artiklid<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/kuidas-kasutada-youtube-i-api-d-video-uleslaadimiseks-youtube-i-kanalile\/\" title=\"Kuidas kasutada YouTube&#039;i API-d video \u00fcleslaadimiseks YouTube&#039;i kanalile\">Kuidas kasutada YouTube&#8217;i API-d video \u00fcleslaadimiseks YouTube&#8217;i kanalile<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/kuidas-kasutada-guzzle-i-php-http-klienti-http-paringute-saatmiseks\/\" title=\"Kuidas kasutada Guzzle&#039;i HTTP-p\u00e4ringute saatmiseks\">Kuidas kasutada Guzzle&#8217;i HTTP-p\u00e4ringute saatmiseks<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/andmete-kirjutamine-onedrive-i-lehele-kasutades-microsoft-graph-api-d-ja-php-d\/\" title=\"Andmete kirjutamine OneDrive&#039;i lehele, kasutades Microsoft Graph API-d ja PHP-d\">Andmete kirjutamine OneDrive&#8217;i lehele, kasutades Microsoft Graph API-d ja PHP-d<\/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>Kas soovite luua Zoomi koosoleku Zoomi API ja PHP abil? Selles artiklis selgitan, kuidas Zoom API-ga suhelda ja genereerida<\/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":[274],"tags":[842],"class_list":["post-26399","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-5","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/26399","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/comments?post=26399"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/26399\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media\/20151"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media?parent=26399"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/categories?post=26399"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/tags?post=26399"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}