{"id":26404,"date":"2021-06-19T17:04:00","date_gmt":"2021-06-19T14:04:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26404"},"modified":"2021-10-17T18:15:06","modified_gmt":"2021-10-17T15:15:06","slug":"kuidas-luua-suumikoosolekuid-php-ja-jwt-abil","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/et\/kuidas-luua-suumikoosolekuid-php-ja-jwt-abil\/","title":{"rendered":"Kuidas luua suumikoosolekuid PHP ja JWT abil"},"content":{"rendered":"<p>Varem olen kirjutanud artikli, mis selgitab suumiskoosoleku <a href=\"https:\/\/themewp.inform.click\/et\/zoomi-abil-koosoleku-loomine-zoomi-api-ja-php-abil\/\" title=\"loomist PHP ja OAuthiga\" >loomist PHP ja OAuthiga<\/a>. \u00dcks meie lugejatest k\u00fcsis Zoom-koosoleku loomise kohta JWT (JSON Web Tokens) ja PHP abil. <a href=\"https:\/\/marketplace.zoom.us\/docs\/guides\/auth\/jwt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Zoom<\/a> API v\u00f5imaldab meil nende API-dega tegelemiseks kasutada nii OAuthi kui ka JWT-d. Suumi API jaoks on vaja OAuthi v\u00f5i JWT kaudu genereeritud kandja m\u00e4rki.<\/p>\n<p><strong>M\u00e4rkus<\/strong>. JWT-d v\u00f5ib kasutada ainult sisemiste rakenduste ja protsesside jaoks. K\u00f5ik kolmanda osapoole kasutamiseks loodud rakendused peavad kasutama rakenduse OAuth t\u00fc\u00fcpi.<\/p>\n<p>Kui soovite luua sisekasutuseks rakenduse Zoom, on JWT-l\u00e4henemine OAuthiga v\u00f5rreldes lihtsam.<\/p>\n<h3>Alustamine<\/h3>\n<p>Alustamiseks minge Zoom Developer Dashboardile ja looge <a href=\"https:\/\/marketplace.zoom.us\/develop\/create\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">uus rakendus<\/a>. Valige <code>JWT<\/code>rakenduse t\u00fc\u00fcbiks ja kopeerige suumi API v\u00f5ti ja saladus.<\/p>\n<p>\u00dcks JWT koosneb kolmest komponendist: p\u00e4is, kasulik koormus ja allkiri, millest <code>.<\/code>iga\u00fcks eraldub. N\u00e4iteks:<code>aaaaa.bbbbb.ccccc<\/code><\/p>\n<p>Saadaval on mitu teeki, mis aitavad JWT-d luua. Soovitan kasutada <a href=\"https:\/\/github.com\/firebase\/php-jwt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">firebase \/ php-jwt<\/a> teeki. See teek pakub JWT loomiseks palju lihtsamat l\u00e4henemist. Installige see teek, kasutades allolevat k\u00e4sku.<\/p>\n<pre><code>composer require firebase\/php-jwt<\/code><\/pre>\n<p>J\u00e4rgmisena peame koosoleku loomiseks saatma ZOST-i API-le p\u00e4ringu POST. Selleks saab kasutada CURL-i. Kuid mulle isiklikult meeldib <a href=\"https:\/\/docs.guzzlephp.org\/en\/stable\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Guzzle,<\/a> mis pakub palju puhtamat koodi kui CURL. Teine Guzzle&#8217;i kasutamise eelis on see, et te ei pea serveris lubama CURL-i laiendust.<\/p>\n<p>Guzzle&#8217;i teegi installimiseks k\u00e4ivitage j\u00e4rgmine k\u00e4sk.<\/p>\n<pre><code>composer require guzzlehttp\/guzzle<\/code><\/pre>\n<h3>Looge JWT ja PHP abil suumikoosolekud<\/h3>\n<p>Eesm\u00e4rgi saavutamiseks oleme installinud kaks paketti. N\u00fc\u00fcd peame lisama selle keskkonna oma PHP-faili. Samuti oleme eelmistes toimingutes kopeerinud Zoom API v\u00f5tmed. M\u00e4\u00e4ratleme need klahvid konstantidena PHP-s.<\/p>\n<pre><code>&lt;?php\nrequire_once 'vendor\/autoload.php';\n\u00a0\nuse FirebaseJWTJWT;\nuse GuzzleHttpClient;\n\u00a0\ndefine('ZOOM_API_KEY', 'API_KEY_HERE');\ndefine('ZOOM_SECRET_KEY', 'API_SECRET_HERE');<\/code><\/pre>\n<p>J\u00e4rgmisena on JWT genereerimine <code>firebase\/php-jwt<\/code>paketi abil j\u00e4rgmine.<\/p>\n<pre><code>function getZoomAccessToken() {\n\u00a0\u00a0\u00a0\u00a0$key = ZOOM_SECRET_KEY;\n\u00a0\u00a0\u00a0\u00a0$payload = array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"iss\" =&gt; ZOOM_API_KEY,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'exp' =&gt; time() + 3600,\n\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0\u00a0\u00a0return JWT::encode($payload, $key);\u00a0\u00a0\u00a0 \n}<\/code><\/pre>\n<p>L\u00f5puks peab suumikoosoleku loomiseks saatma POST-p\u00e4ringu l\u00f5pp- <code>\/v2\/users\/me\/meetings<\/code>punkti JWT-ga kui <strong>kandja m\u00e4rgiks<\/strong>.<\/p>\n<pre><code>function createZoomMeeting() {\n\u00a0\u00a0\u00a0\u00a0$client = new Client([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Base URI is used with relative requests\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'base_uri' =&gt; 'https:\/\/api.zoom.us',\n\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$response = $client-&gt;request('POST', '\/v2\/users\/me\/meetings', [\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; \"Bearer \". getZoomAccessToken()\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'json' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"topic\" =&gt; \"Let's Learn WordPress\",\n\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\"start_time\" =&gt; \"2021-01-30T20:30:00\",\n\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\"password\" =&gt; \"123456\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$data = json_decode($response-&gt;getBody());\n\u00a0\u00a0\u00a0\u00a0echo \"Join URL: \". $data-&gt;join_url;\n\u00a0\u00a0\u00a0\u00a0echo \"&lt;br&gt;\";\n\u00a0\u00a0\u00a0\u00a0echo \"Meeting Password: \". $data-&gt;password;\n}\n\u00a0\ncreateZoomMeeting();<\/code><\/pre>\n<h3>Lisage koosolekute loend<\/h3>\n<p>Oma rakenduses v\u00f5iksite loetleda k\u00f5ik suumi koosolekud. Zoom pakub API-d, mille kaudu saame k\u00f5igi Zoom-koosolekute loendi. Alloleva koodi abil saate printida oma suumikoosolekute \u00fcksikasjad.<\/p>\n<pre><code>$client = new GuzzleHttpClient(['base_uri' =&gt; 'https:\/\/api.zoom.us']);\n\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 \". getZoomAccessToken()\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>Siinkohal 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>Eelmiste koosolekute jaoks saate osalejate nimekirja, kasutades Zoom API-d. Kui olete tasulisel kontol, saate seda konkreetset API-d kasutada. Sellel API-l peab olema tasuline konto. Kui proovite sellele API-le helistada tasuta kontoga, kuvatakse t\u00f5rge.<\/p>\n<pre><code>$client = new GuzzleHttpClient(['base_uri' =&gt; 'https:\/\/api.zoom.us']);\n\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 \". getZoomAccessToken()\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>Kustuta Zoom Meeting koos JWT ja PHP-ga<\/h3>\n<p>Koosoleku loomiseks lisamise korral pakub Zoom ka API l\u00f5pp-punkte, nagu koosoleku loend, v\u00e4rskendamine ja kustutamine. Konkreetse l\u00f5pp-punkti kasutamiseks peab kasutaja j\u00e4rgima oma API dokumentatsiooni. N\u00e4iteks v\u00f5ite <a href=\"https:\/\/marketplace.zoom.us\/docs\/api-reference\/zoom-api\/meetings\/meetingdelete\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">koosoleku kustutada<\/a>, saates DELIME-p\u00e4ringu Zoom API l\u00f5pp-punkti. Peate edastama oma koosoleku ID l\u00f5pp-punktile j\u00e4rgmiselt.<\/p>\n<pre><code>function deleteZoomMeeting($meeting_id) {\n\u00a0\u00a0\u00a0\u00a0$client = new Client([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Base URI is used with relative requests\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'base_uri' =&gt; 'https:\/\/api.zoom.us',\n\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$response = $client-&gt;request(\"DELETE\", \"\/v2\/meetings\/$meeting_id\", [\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; \"Bearer \". getZoomAccessToken()\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\n\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if (204 == $response-&gt;getStatusCode()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Meeting deleted.\";\n\u00a0\u00a0\u00a0\u00a0}\n}\n\u00a0\ndeleteZoomMeeting('MEETING_ID_HERE');<\/code><\/pre>\n<p>Loodetavasti \u00f5ppisite tundma PHP ja JWT-ga suumikoosolekute loomist. Palun jagage oma 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\/juhend-hcaptcha-integreerimiseks-php-ga\/\" title=\"Juhend hCaptcha integreerimiseks PHP-ga\">Juhend hCaptcha integreerimiseks PHP-ga<\/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<li><a href=\"https:\/\/themewp.inform.click\/et\/kone-tekstiks-kasutades-php-s-amazon-transcribe-i\/\" title=\"K\u00f5ne tekstiks, kasutades PHP-s Amazon Transcribe&#039;i\">K\u00f5ne tekstiks, kasutades PHP-s Amazon Transcribe&#8217;i<\/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 suumikohtumisi JWT ja PHP-ga? JWT (JSON-i veebim\u00e4rgid) on OAuthi alternatiiv juurdep\u00e4\u00e4suloa loomiseks. Selles<\/p>\n","protected":false},"author":1,"featured_media":20149,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[274],"tags":[842],"class_list":["post-26404","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\/26404","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=26404"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/26404\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media\/20149"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media?parent=26404"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/categories?post=26404"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/tags?post=26404"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}