{"id":25517,"date":"2021-06-08T17:03:00","date_gmt":"2021-06-08T14:03:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25517"},"modified":"2021-10-17T20:23:53","modified_gmt":"2021-10-17T17:23:53","slug":"kuinka-kayttaa-youtube-sovellusliittymaa-videon-lataamiseen-youtube-kanavalle","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/kuinka-kayttaa-youtube-sovellusliittymaa-videon-lataamiseen-youtube-kanavalle\/","title":{"rendered":"Kuinka k\u00e4ytt\u00e4\u00e4 YouTube-sovellusliittym\u00e4\u00e4 videon lataamiseen YouTube-kanavalle"},"content":{"rendered":"<p>Kaikki tiet\u00e4v\u00e4t YouTubesta. YouTube on ykk\u00f6nen videoiden jakamisalusta maailmassa. Voimme k\u00e4ytt\u00e4\u00e4 videoita YouTuben avulla. T\u00e4m\u00e4 s\u00e4\u00e4st\u00e4\u00e4 paljon palvelintilaa, ja YouTube-video voidaan helposti upottaa verkkosivustolle. Kuka tahansa voi ladata videon YouTubeen. Sinun tarvitsee vain kirjautua sis\u00e4\u00e4n YouTube-tiliisi ja ladata video. Yksinkertainen ja yksinkertainen prosessi. Mutta ent\u00e4 jos jonkun on ladattava videoita YouTube-sovellusliittym\u00e4n kautta YouTube-kanavalle? Onko se mahdollista? Kyll\u00e4 se on mahdollista. T\u00e4ss\u00e4 artikkelissa tutkitaan, miten YouTube-sovellusliittym\u00e4\u00e4 voidaan k\u00e4ytt\u00e4\u00e4 videon lataamiseen PHP: ll\u00e4.<\/p>\n<h3>Rekister\u00f6i sovellus ja luo kirjautumistiedot<\/h3>\n<p>YouTube-sovellusliittym\u00e4n k\u00e4yt\u00f6n aloittaminen edellytt\u00e4\u00e4 Google-tili\u00e4. Kun sinulla on Google-tili, rekister\u00f6i hakemuksesi ja hanki API-avaimet.<\/p>\n<p>Alla on vaiheet sovelluksen rekister\u00f6imiseksi ja API-avainten hankkimiseksi.<\/p>\n<ul>\n<li>Siirry Google Developer Consoleen <a href=\"https:\/\/console.developers.google.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external\"><\/a><a href=\"https:\/\/console.developers.google.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/console.developers.google.com<\/a><\/li>\n<li>Luo uusi projekti. Voit valita my\u00f6s olemassa olevan projektin.<\/li>\n<li>Kirjoita projektisi nimi. Google Console luo yksil\u00f6llisen projektitunnuksen.<\/li>\n<li>Kun olet luonut projektin, se n\u00e4kyy vasemman sivupalkin yl\u00e4osassa.<\/li>\n<li>Napsauta Kirjasto. N\u00e4et luettelon Google-sovellusliittymist\u00e4.<\/li>\n<li>Ota YouTube Data -sovellusliittym\u00e4 k\u00e4ytt\u00f6\u00f6n.<\/li>\n<li>Napsauta Tunnistetiedot. Valitse Luo kirjautumistiedot -kohdasta Oauth-asiakastunnus. Valitse valintanappi Web-sovellukselle.<\/li>\n<li>Anna nimi. Sy\u00f6t\u00e4 verkkotunnuksesi URL-osoite kohtaan Valtuutetut JavaScript-alkuper\u00e4t. Anna valtuutettujen uudelleenohjausten URI-tiedostoissa uudelleenohjauksen URL-osoitteen linkki. Minun tapauksessani <a href=\"http:\/\/localhost\/youtube\/callback.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">l\u00e4p\u00e4isin<\/a> URL-osoitteen <a href=\"http:\/\/localhost\/youtube\/callback.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http: \/\/localhost\/youtube\/callback.php<\/a>.<\/li>\n<li>Napsauta Luo-painiketta. Saat asiakastunnuksen ja asiakassalaisuuden ponnahdusikkunassa. Kopioi n\u00e4m\u00e4 tiedot. Tarvitsemme sit\u00e4 hetken kuluttua.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20298-6081da1616456.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20298-6081da1616456.png\" alt=\"Kuinka k\u00e4ytt\u00e4\u00e4 YouTube-sovellusliittym\u00e4\u00e4 videon lataamiseen YouTube-kanavalle\" ><\/a><\/p>\n<h3>M\u00e4\u00e4rit\u00e4 perusasetukset<\/h3>\n<p>Videon lataaminen YouTube-sovellusliittym\u00e4n avulla edellytt\u00e4\u00e4, ett\u00e4 luot k\u00e4ytt\u00f6oikeustunnuksen. K\u00e4ytt\u00f6oikeustunnus on vain YouTube-tilin tunniste.<\/p>\n<p>Mutta k\u00e4ytt\u00f6oikeustunnus vanhenee jonkin ajan kuluttua. Kun k\u00e4ytt\u00f6oikeustunnus vanhenee, saat virheellisen luvan. Ratkaisu t\u00e4h\u00e4n on suorittaa valtuutusprosessi uudelleen tai luoda k\u00e4ytt\u00f6oikeustunnus uudelleen taustalla ja suorittaa lataus loppuun. T\u00e4ss\u00e4 artikkelissa k\u00e4yt\u00e4n toista ratkaisua. Uudistamme k\u00e4ytt\u00f6oikeustunnuksen, jos se on vanhentunut taustalla rikkomatta latausprosessia. N\u00e4in tekem\u00e4ll\u00e4 sinun ei tarvitse tehd\u00e4 valtuutusprosessia uudestaan \u200b\u200bja uudestaan.<\/p>\n<p>T\u00e4st\u00e4 huolimatta sinun on ensin valtuutettava tili luomaan k\u00e4ytt\u00f6oikeustunnus. Aion k\u00e4ytt\u00e4\u00e4 <a href=\"https:\/\/hybridauth.github.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Hybridauth-<\/a> kirjastoa valtuutukseen ja k\u00e4ytt\u00f6oikeustunnuksen luomiseen. Avaa <code>composer.json<\/code>tiedosto ja lis\u00e4\u00e4 siihen alla olevat rivit.<\/p>\n<pre><code>{\n\u00a0\u00a0\u00a0\u00a0\"require\": {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"google\/apiclient\": \"2.0\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"hybridauth\/hybridauth\": \"~3.0\"\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Huomaa, ett\u00e4 YouTube on Googlen tuote ja YouTube-sovellusliittym\u00e4 on vain Google-sovellusliittym\u00e4. Siksi k\u00e4yt\u00e4mme kirjastoa google \/ apiclient. Suorita sitten alla oleva komento n\u00e4iden kirjastojen asennusta varten.<\/p>\n<pre><code>composer install<\/code><\/pre>\n<h4>Tietokannan kokoonpano<\/h4>\n<p>Jokaisessa API-puhelussa meid\u00e4n on l\u00e4hetett\u00e4v\u00e4 p\u00e4\u00e4sykoodi, joten tallenna se tietokantaan. Luo taulukko &#8217;token&#8217; tietokantaan alla olevan kyselyn avulla.<\/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>T\u00e4m\u00e4n artikkelin my\u00f6hemm\u00e4ss\u00e4 osassa meid\u00e4n on oltava vuorovaikutuksessa t\u00e4m\u00e4n &#8217;merkkitaulukon&#8217; kanssa tunnuksen yksityiskohtien noutamiseksi ja p\u00e4ivitt\u00e4miseksi. Se edellytt\u00e4\u00e4 tietokantayhteyden ja muutaman kyselyn kirjoittamista. Luo tiedosto <code>class-db.php<\/code>ja lis\u00e4\u00e4 siihen seuraava 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\u00a0\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\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\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return true;\n\u00a0\u00a0\u00a0\u00a0}\n\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\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\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>V\u00e4lit\u00e4 tietokannan kirjautumistiedot yll\u00e4 olevaan tiedostoon. Oletan, ett\u00e4 t\u00e4ss\u00e4 haluat k\u00e4ytt\u00e4\u00e4 yht\u00e4 YouTube-tili\u00e4. Jos aiot k\u00e4ytt\u00e4\u00e4 useita tilej\u00e4, muokkaa yll\u00e4 olevia kyselyj\u00e4 tarpeidesi mukaan.<\/p>\n<h3>Luo k\u00e4ytt\u00f6oikeustunnus<\/h3>\n<p>Olet asentanut kirjastot ja luonut taulukon tunnuksen tallentamista varten. Tehd\u00e4\u00e4n nyt valtuutusprosessi, napataan k\u00e4ytt\u00f6oikeustunnus ja tallennetaan se &#8217;tunniste&#8217; -taulukkoon.<\/p>\n<p>Luo <code>config.php<\/code>tiedosto ja kirjoita kokoonpano HybridAuth-kirjaston ohjeiden mukaisesti.<\/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\ndefine('GOOGLE_CLIENT_ID', 'PASTE_CLIENT_ID_HERE');\ndefine('GOOGLE_CLIENT_SECRET', 'PASTE_CLIENT_SECRET_HERE');\n\u00a0\n$config = [\n\u00a0\u00a0\u00a0\u00a0'callback' =&gt; 'YOUR_DOMAIN_URL\/callback.php',\n\u00a0\u00a0\u00a0\u00a0'keys'\u00a0\u00a0\u00a0\u00a0 =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'id' =&gt; GOOGLE_CLIENT_ID,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'secret' =&gt; GOOGLE_CLIENT_SECRET\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0'scope'\u00a0\u00a0\u00a0 =&gt; 'https:\/\/www.googleapis.com\/auth\/youtube https:\/\/www.googleapis.com\/auth\/youtube.upload',\n\u00a0\u00a0\u00a0\u00a0'authorize_url_parameters' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'approval_prompt' =&gt; 'force', \/\/ to pass only when you need to acquire a new refresh token.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'access_type' =&gt; 'offline'\n\u00a0\u00a0\u00a0\u00a0]\n];\n\u00a0\n$adapter = new HybridauthProviderGoogle( $config );<\/code><\/pre>\n<p>Korvaa paikkamerkit Google-kirjautumistietojesi todellisilla arvoilla. Lis\u00e4\u00e4 sama takaisinsoitto-URL, jonka olet v\u00e4litt\u00e4nyt luodessasi konsolisovellusta. Se tarkoittaa, ett\u00e4 kun k\u00e4ytt\u00e4j\u00e4 on suorittanut valtuutusprosessin, h\u00e4n ohjaa <code>callback.php<\/code>tiedoston uudelleen .<\/p>\n<p>Vuonna <code>callback.php<\/code>tiedosto, noudamme k\u00e4ytt\u00f6tunnisteena yksityiskohtia ja tallentaa sen tietokantaan.<\/p>\n<p><strong>callback.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once 'config.php';\n\u00a0\ntry {\n\u00a0\u00a0\u00a0\u00a0$adapter-&gt;authenticate();\n\u00a0\u00a0\u00a0\u00a0$token = $adapter-&gt;getAccessToken();\n\u00a0\u00a0\u00a0\u00a0$db = new DB();\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}\ncatch( Exception $e ){\n\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage() ;\n}<\/code><\/pre>\n<p>Siirry selaimeesi ja suorita YOUR_DOMAIN_URL \/ callback.php, ohjaat uudelleen Google-tilille, suoritat valtuutusprosessin ja sinun pit\u00e4isi n\u00e4hd\u00e4 menestysviesti. Tarkista tietokantataulukon &#8217;token&#8217;. Sen pit\u00e4isi tallentaa tunnuksen tiedot. Ja se tarkoittaa, ett\u00e4 voit ladata videon YouTube-kanavallesi eteenp\u00e4in.<\/p>\n<h3>Lataa video YouTube-kanavalle YouTube-sovellusliittym\u00e4n avulla<\/h3>\n<p>Sait k\u00e4ytt\u00f6oikeustunnuksen, jota k\u00e4ytet\u00e4\u00e4n videon lataamiseen YouTube-kanavalle Google-sovellusliittym\u00e4n kautta. Mutta kuten aiemmin mainitsin, k\u00e4ytt\u00f6oikeustunnus vanhenisi jonkin ajan kuluttua, ja me uudistamme sen taustalla pyyt\u00e4m\u00e4tt\u00e4 lupamenettely\u00e4 uudelleen.<\/p>\n<p>Voimme tehd\u00e4 sen k\u00e4ytt\u00e4m\u00e4ll\u00e4 &#8217;referh_token&#8217;. Jos tarkastelet taulukon &#8217;access_token&#8217; -saraketta, n\u00e4et, ett\u00e4 se sis\u00e4lt\u00e4\u00e4 my\u00f6s merkinn\u00e4n &#8217;refresh_token&#8217;. &#8217;Refresh_token&#8217; -toiminnon avulla kutsumme &#8217;\/ o \/ oauth2 \/ token&#8217; -p\u00e4\u00e4tepisteen ja luodaan k\u00e4ytt\u00f6oikeustunnus taustalla.<\/p>\n<p>Seuraavaksi tarvitset HTML-lomakkeen, jonka avulla voit selata videota ja l\u00e4hett\u00e4\u00e4 sen palvelimelle lataamista varten. Luodaan yksinkertainen HTML-muoto seuraavasti.<\/p>\n<p><strong>index.php<\/strong><\/p>\n<pre><code>&lt;form method=\"post\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"text\" name=\"title\" placeholder=\"Enter Video Title\" \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;textarea name=\"summary\" cols=\"30\" rows=\"10\" placeholder=\"Video description\"&gt;&lt;\/textarea&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"file\" name=\"file\"\/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"submit\" value=\"Submit\" \/&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Lomakkeessa on 3 kentt\u00e4\u00e4 &#8211; otsikko, kuvaus ja tiedosto. Kun l\u00e4het\u00e4t t\u00e4m\u00e4n lomakkeen, video tulee ladata YouTube-kanavallesi sek\u00e4 annettu otsikko ja kuvaus.<\/p>\n<p><strong>index.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once 'config.php';\n\u00a0\nif (isset($_POST['submit'])) {\n\u00a0\u00a0\u00a0\u00a0$arr_data = array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'title' =&gt; $_POST['title'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'summary' =&gt; $_POST['summary'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'video_path' =&gt; $_FILES['file']['tmp_name'],\n\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0\u00a0\u00a0upload_video_on_youtube($arr_data);\n}\n\u00a0\nfunction upload_video_on_youtube($arr_data) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$client = new Google_Client();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$db = new DB();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$arr_token = (array) $db-&gt;get_access_token();\n\u00a0\u00a0\u00a0\u00a0$accessToken = array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'access_token' =&gt; $arr_token['access_token'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'expires_in' =&gt; $arr_token['expires_in'],\n\u00a0\u00a0\u00a0\u00a0);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$client-&gt;setAccessToken($accessToken);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$service = new Google_Service_YouTube($client);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$video = new Google_Service_YouTube_Video();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$videoSnippet = new Google_Service_YouTube_VideoSnippet();\n\u00a0\u00a0\u00a0\u00a0$videoSnippet-&gt;setDescription($arr_data['summary']);\n\u00a0\u00a0\u00a0\u00a0$videoSnippet-&gt;setTitle($arr_data['title']);\n\u00a0\u00a0\u00a0\u00a0$video-&gt;setSnippet($videoSnippet);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$videoStatus = new Google_Service_YouTube_VideoStatus();\n\u00a0\u00a0\u00a0\u00a0$videoStatus-&gt;setPrivacyStatus('public');\n\u00a0\u00a0\u00a0\u00a0$video-&gt;setStatus($videoStatus);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $service-&gt;videos-&gt;insert(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'snippet,status',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$video,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'data' =&gt; file_get_contents($arr_data['video_path']),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'mimeType' =&gt; 'video\/*',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'uploadType' =&gt; 'multipart'\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\u00a0\u00a0\u00a0\u00a0echo \"Video uploaded successfully. Video id is \". $response-&gt;id;\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\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$client = new GuzzleHttpClient(['base_uri' =&gt; 'https:\/\/accounts.google.com']);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $client-&gt;request('POST', '\/o\/oauth2\/token', [\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\u00a0\u00a0\u00a0\u00a0\"client_id\" =&gt; GOOGLE_CLIENT_ID,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"client_secret\" =&gt; GOOGLE_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]);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data = (array) json_decode($response-&gt;getBody());\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data['refresh_token'] = $refresh_token;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$db-&gt;update_access_token(json_encode($data));\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0upload_video_on_youtube($arr_data);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/echo $e-&gt;getMessage(); \/\/print the error just in case your video is not uploaded.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}\n?&gt;<\/code><\/pre>\n<p>Yll\u00e4 oleva koodi ottaa videotiedoston HTML-lomakkeesta ja l\u00e4hett\u00e4\u00e4 sen sovellusliittym\u00e4n kautta YouTube-kanavallesi. Jos k\u00e4ytt\u00f6oikeustunnuksesi on vanhentunut, se uudistaa tunnuksen taustalla ja jatkaa prosessia rikkomatta sit\u00e4.<\/p>\n<h3>L\u00e4het\u00e4 mukautettu pikkukuva YouTube-videoon<\/h3>\n<p>Jos rakennat mukautettua sovellusta, joka hallinnoi YouTube-videoita, todenn\u00e4k\u00f6isesti haluat ladata pikkukuvan YouTube-videoon. Mukautetun pikkukuvan lataaminen edellytt\u00e4\u00e4, ett\u00e4 k\u00e4ytt\u00e4jien on vahvistettava puhelinnumeronsa YouTube-tilill\u00e4. K\u00e4y linkiss\u00e4<a href=\"https:\/\/www.youtube.com\/features\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external\"><\/a><a href=\"https:\/\/www.youtube.com\/features\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/www.youtube.com\/features<\/a> ja vahvista puhelinnumero.<\/p>\n<p>Kun olet vahvistanut puhelinnumeron, voit k\u00e4ytt\u00e4\u00e4 edellist\u00e4 lomakettamme ja koodiamme pienin muutoksin ja asettaa mukautetun pikkukuvan l\u00e4hetetylle videolle. Lis\u00e4\u00e4 ensin lomakekentt\u00e4, joka sallii kuvien lataamisen. Suositeltu YouTube-pikkukuvan koko on <code>1280x720<\/code>.<\/p>\n<pre><code>&lt;p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;label&gt;Image&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"file\" name=\"image\" accept=\"image\/*\" \/&gt;\n&lt;\/p&gt;<\/code><\/pre>\n<p>L\u00e4hetett\u00e4v\u00e4\u00e4n lomakkeeseen olemme rakentaneet taulukon, <code>$arr_data<\/code>joka sis\u00e4lt\u00e4\u00e4 kaikki lomaketiedot. Lis\u00e4\u00e4 uusi pari kuvaa varten taulukko <code>$arr_data<\/code>seuraavasti.<\/p>\n<pre><code>$arr_data = array(\n\u00a0\u00a0\u00a0\u00a0'title' =&gt; $_POST['title'],\n\u00a0\u00a0\u00a0\u00a0'summary' =&gt; $_POST['summary'],\n\u00a0\u00a0\u00a0\u00a0'video_path' =&gt; $_FILES['file']['tmp_name'],\n\u00a0\u00a0\u00a0\u00a0'image_path' =&gt; $_FILES['image']['tmp_name'], \/\/ here we are passing image\n);<\/code><\/pre>\n<p>Seuraavaksi, kun koodimme on ladannut videon YouTubeen, meid\u00e4n on otettava videotunnus ja m\u00e4\u00e4ritett\u00e4v\u00e4 videolle oma pikkukuva.<\/p>\n<pre><code>&lt;?php\n...\n...\necho \"Video uploaded successfully. Video id is \". $response-&gt;id;\n\u00a0\n\/\/upload thumbnail\n$videoId = $response-&gt;id;\n\u00a0\n$chunkSizeBytes = 1 * 1024 * 1024;\n\u00a0\n$client-&gt;setDefer(true);\n\u00a0\n$setRequest = $service-&gt;thumbnails-&gt;set($videoId);\n\u00a0\n$media = new Google_Http_MediaFileUpload(\n\u00a0\u00a0\u00a0\u00a0$client,\n\u00a0\u00a0\u00a0\u00a0$setRequest,\n\u00a0\u00a0\u00a0\u00a0'image\/png',\n\u00a0\u00a0\u00a0\u00a0null,\n\u00a0\u00a0\u00a0\u00a0true,\n\u00a0\u00a0\u00a0\u00a0$chunkSizeBytes\n);\n$imagePath = $arr_data['image_path'];\n$media-&gt;setFileSize(filesize($imagePath));\n\u00a0\n$status = false;\n$handle = fopen($imagePath, \"rb\");\n\u00a0\nwhile (!$status &amp;&amp; !feof($handle)) {\n\u00a0\u00a0\u00a0\u00a0$chunk\u00a0 = fread($handle, $chunkSizeBytes);\n\u00a0\u00a0\u00a0\u00a0$status = $media-&gt;nextChunk($chunk);\n}\n\u00a0\nfclose($handle);\n\u00a0\n$client-&gt;setDefer(false);\necho \"&lt;br&gt;Thumbanil: \". $status['items'][0]['default']['url'];<\/code><\/pre>\n<h3>Poista video YouTube-kanavalta YouTube-sovellusliittym\u00e4n avulla<\/h3>\n<p>Saatat my\u00f6s haluta koodin videoiden poistamiseksi YouTube-sovellusliittym\u00e4n avulla. Videon poistamiseksi tarvitset lis\u00e4alueen, <code>https:\/\/www.googleapis.com\/auth\/youtube<\/code>jonka olen jo sis\u00e4llytt\u00e4nyt yll\u00e4 m\u00e4\u00e4ritystiedostoon. Se tarkoittaa, ett\u00e4 yll\u00e4 olevien vaiheiden avulla luotua k\u00e4ytt\u00f6oikeustunnusta voidaan k\u00e4ytt\u00e4\u00e4 videon poistamiseen.<\/p>\n<p>Alla on koodi, joka poistaa videon YouTube-kanavastasi.<\/p>\n<pre><code>&lt;?php\nrequire_once 'config.php';\n\u00a0\ndelete_video('VIDEO_ID_HERE');\n\u00a0\nfunction delete_video($id) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$client = new Google_Client();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$db = new DB();\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$arr_token = (array) $db-&gt;get_access_token();\n\u00a0\u00a0\u00a0\u00a0$accessToken = array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'access_token' =&gt; $arr_token['access_token'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'expires_in' =&gt; $arr_token['expires_in'],\n\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$client-&gt;setAccessToken($accessToken);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$service = new Google_Service_YouTube($client);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$service-&gt;videos-&gt;delete($id);\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:\/\/accounts.google.com']);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $client-&gt;request('POST', '\/o\/oauth2\/token', [\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\u00a0\u00a0\u00a0\u00a0\"client_id\" =&gt; GOOGLE_CLIENT_ID,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"client_secret\" =&gt; GOOGLE_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]);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data = (array) json_decode($response-&gt;getBody());\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data['refresh_token'] = $refresh_token;\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$db-&gt;update_access_token(json_encode($data));\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0delete_video($id);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/echo $e-&gt;getMessage(); \/\/print the error just in case your video is not uploaded.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Se siit\u00e4! Toivon, ett\u00e4 sait tiet\u00e4\u00e4 kuinka ladata video YouTube-kanavalle YouTube-sovellusliittym\u00e4n avulla. Haluaisin kuulla ajatuksesi tai ehdotuksesi alla olevassa kommenttiosassa.<\/p>\n<h4>Aiheeseen liittyv\u00e4t artikkelit<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-ladata-video-youtubeen-laravel-sovelluksessa\/\" title=\"Kuinka ladata video YouTubeen Laravel-sovelluksessa\">Kuinka ladata video YouTubeen Laravel-sovelluksessa<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-hankkia-youtube-videotunnisteet-youtube-sovellusliittyman-avulla\/\" title=\"Kuinka hankkia YouTube-videotunnisteet YouTube-sovellusliittym\u00e4n avulla\">Kuinka hankkia YouTube-videotunnisteet YouTube-sovellusliittym\u00e4n avulla<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/youtube-sovellusliittyma-kuinka-saada-luettelo-kanavasi-youtube-videoista\/\" title=\"YouTube-sovellusliittym\u00e4 - Kuinka saada luettelo kanavasi YouTube-videoista\">YouTube-sovellusliittym\u00e4 &#8211; Kuinka saada luettelo kanavasi YouTube-videoista<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/hanki-youtube-videoluettelo-avainsanojen-mukaan-kayttamalla-youtube-hakusovellusliittymaa\/\" title=\"Kuinka saada YouTube-videoluettelo avainsanojen avulla YouTube-hakusovellusliittym\u00e4n avulla\">Kuinka saada YouTube-videoluettelo avainsanojen avulla YouTube-hakusovellusliittym\u00e4n 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 oppia YouTube-sovellusliittym\u00e4n lataamaan videota? T\u00e4ss\u00e4 artikkelissa n\u00e4yt\u00e4mme, kuinka rekister\u00f6it sovelluksen, luodaan API-avaimet, asennetaan Google-asiakaskirjasto.<\/p>\n","protected":false},"author":1,"featured_media":21640,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[275],"tags":[843],"class_list":["post-25517","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\/25517","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=25517"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/25517\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/21640"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=25517"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=25517"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=25517"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}