{"id":26068,"date":"2021-06-08T17:38:00","date_gmt":"2021-06-08T14:38:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26068"},"modified":"2021-10-17T18:25:30","modified_gmt":"2021-10-17T15:25:30","slug":"kuidas-kasutada-youtube-i-api-d-video-uleslaadimiseks-youtube-i-kanalile","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/et\/kuidas-kasutada-youtube-i-api-d-video-uleslaadimiseks-youtube-i-kanalile\/","title":{"rendered":"Kuidas kasutada YouTube&#8217;i API-d video \u00fcleslaadimiseks YouTube&#8217;i kanalile"},"content":{"rendered":"<p>K\u00f5ik teavad YouTube&#8217;ist. YouTube on video jagamise platvorm number \u00fcks maailmas. Saame oma videote majutamiseks kasutada YouTube&#8217;i. See s\u00e4\u00e4stab meile palju serveriruumi ja YouTube&#8217;i video saab veebisaidile h\u00f5lpsasti manustada. Iga\u00fcks saab video YouTube&#8217;i \u00fcles laadida. K\u00f5ik, mida peate tegema, on lihtsalt oma YouTube&#8217;i kontole sisse logida ja video \u00fcles laadida. Lihtne ja arusaadav protsess. Aga mis siis, kui keegi peab YouTube&#8217;i kanali kaudu YouTube&#8217;i API kaudu videoid \u00fcles laadima? Kas see on v\u00f5imalik? Jah, see on v\u00f5imalik. Selles artiklis uurime, kuidas kasutada YouTube&#8217;i API-d video \u00fcleslaadimiseks PHP abil.<\/p>\n<h3>Registreerige rakendus ja looge volitused<\/h3>\n<p>YouTube&#8217;i API-ga alustamiseks vajate Google&#8217;i kontot. Kui teil on Google&#8217;i konto, registreerige oma rakendus ja hankige API-v\u00f5tmed.<\/p>\n<p>Allpool on toodud rakenduse registreerimise ja API-v\u00f5tmete hankimise sammud.<\/p>\n<ul>\n<li>Minge Google&#8217;i arendajakonsoolile <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>Looge uus projekt. Saate valida ka olemasoleva projekti.<\/li>\n<li>Sisestage oma projekti nimi. Google Console loob unikaalse projekti ID.<\/li>\n<li>P\u00e4rast projekti loomist ilmub see vasaku k\u00fclgriba \u00fclaossa.<\/li>\n<li>Kl\u00f5psake teeki. N\u00e4ete Google&#8217;i API-de loendit.<\/li>\n<li>Luba YouTube Data API.<\/li>\n<li>Kl\u00f5psake Mandaadid. Valige Loo mandaadid jaotisest Oauth Client id. Valige veebirakenduse raadionupp.<\/li>\n<li>Pange nimi. Sisestage jaotises Volitatud JavaScripti p\u00e4ritolu oma domeeni URL. Volitatud \u00fcmbersuunamise URI-desse lisage \u00fcmbersuunamise URL-i link. Minu puhul <a href=\"http:\/\/localhost\/youtube\/callback.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">l\u00e4bisin<\/a> URL-i <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>Kl\u00f5psake nuppu Loo. H\u00fcpikaknast saate kliendi ID ja kliendisaladuse. Kopeerige need \u00fcksikasjad. Me vajame seda m\u00f5ne aja p\u00e4rast.<\/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=\"Kuidas kasutada YouTube&#039;i API-d video \u00fcleslaadimiseks YouTube&#039;i kanalile\" ><\/a><\/p>\n<h3>P\u00f5hikonfiguratsiooni seadistamine<\/h3>\n<p>Video \u00fcleslaadimiseks YouTube&#8217;i API abil peate looma juurdep\u00e4\u00e4suloa. Juurdep\u00e4\u00e4suluba pole midagi muud kui YouTube&#8217;i konto identifikaator.<\/p>\n<p>Kuid juurdep\u00e4\u00e4suluba aegub m\u00f5ne aja m\u00f6\u00f6dudes. Kui juurdep\u00e4\u00e4suluba aegub, kuvatakse viga \u201eVolitamata juurdep\u00e4\u00e4s&quot;. Selle lahenduseks on autoriseerimisprotsessi uuesti k\u00e4ivitamine v\u00f5i taustal juurdep\u00e4\u00e4su loa taastamine ja \u00fcleslaadimise l\u00f5petamine. Selles artiklis valin teise lahenduse. Kui juurdep\u00e4\u00e4suluba aegub taustal, laadime selle \u00fcleslaadimisprotsessi rikkumata uuesti. Nii tehes ei pea te autoriseerimisprotsessi uuesti ja uuesti tegema.<\/p>\n<p>Nagu \u00f6eldud, peate k\u00f5igepealt konto volitama, et genereerida juurdep\u00e4\u00e4suluba. Kavatsen autoriseerimiseks ja juurdep\u00e4\u00e4suloa loomiseks kasutada <a href=\"https:\/\/hybridauth.github.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Hybridauthi<\/a> teeki. Avage oma <code>composer.json<\/code>fail ja lisage sellesse j\u00e4rgmised read.<\/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>Pange t\u00e4hele, et YouTube on Google&#8217;i toode ja YouTube&#8217;i API pole midagi muud kui Google&#8217;i API. Sellep\u00e4rast kasutame teeki \u201egoogle \/ apiclient&#8221;. Seej\u00e4rel k\u00e4ivitage nende teekide installimiseks allolev k\u00e4sk.<\/p>\n<pre><code>composer install<\/code><\/pre>\n<h4>Andmebaasi seadistamine<\/h4>\n<p>Iga API-k\u00f5ne puhul peame saatma juurdep\u00e4\u00e4suloa, nii et salvestage see andmebaasi. Looge oma andmebaasis tabel &#8216;token&#8217;, kasutades allolevat p\u00e4ringut.<\/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>Selle artikli hilisemas osas peame loa \u00fcksikasjade hankimiseks ja v\u00e4rskendamiseks suhtlema selle m\u00e4rgilauaga. Selleks on vaja kirjutada andmebaasi\u00fchendus ja m\u00f5ned p\u00e4ringud. Looge fail <code>class-db.php<\/code>ja lisage sellele j\u00e4rgmine 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\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>Andke oma andmebaasi mandaadid \u00fclaltoodud faili. Eeldan, et soovite kasutada \u00fchte YouTube&#8217;i kontot. Kui kavatsete kasutada mitut kontot, muutke \u00fclaltoodud p\u00e4ringuid vastavalt oma vajadustele.<\/p>\n<h3>Loo juurdep\u00e4\u00e4suluba<\/h3>\n<p>Olete installinud teegid ja loonud tabeli m\u00e4rgi salvestamiseks. N\u00fc\u00fcd teeme autoriseerimisprotsessi, haarame juurdep\u00e4\u00e4suloa ja salvestame selle tabelisse &quot;m\u00e4rk&quot;.<\/p>\n<p>Looge <code>config.php<\/code>fail ja kirjutage konfiguratsioon vastavalt HybridAuthi teegi juhistele.<\/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>Asendage kohat\u00e4ited oma Google&#8217;i mandaatide tegelike v\u00e4\u00e4rtustega. Lisage sama tagasihelistamise URL, mille andsite edasi konsoolirakenduse loomisel. See t\u00e4hendab, et kui kasutaja on autoriseerimisprotsessi l\u00f5petanud, suunab ta <code>callback.php<\/code>faili \u00fcmber .<\/p>\n<p>In <code>callback.php<\/code>faili, me t\u00f5mmata juurep\u00e4\u00e4suluba \u00fcksikasju ja hoidke seda andmebaasi.<\/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>Minge oma brauserisse ja k\u00e4itage veebisaiti YOUR_DOMAIN_URL \/ callback.php. Suunate Google&#8217;i kontole, l\u00f5petate autoriseerimisprotsessi ja peaksite n\u00e4gema edukat teadet. Kontrollige andmebaasitabelit &#8216;token&#8217;. Sellel peaksid olema teie m\u00e4rgistuse \u00fcksikasjad salvestatud. Ja see t\u00e4hendab, et teil on hea oma YouTube&#8217;i kanalile video \u00fcles laadida.<\/p>\n<h3>Laadige video YouTube&#8217;i kanalile \u00fcles YouTube API abil<\/h3>\n<p>Teil on juurdep\u00e4\u00e4suluba, mida kasutatakse video \u00fcleslaadimiseks YouTube&#8217;i kanalile Google API kaudu. Kuid nagu ma juba varem mainisin, aegub juurdep\u00e4\u00e4suluba m\u00f5ne aja p\u00e4rast ja me taastame selle taustal uuesti autoriseerimisprotsessi k\u00fcsimata.<\/p>\n<p>Saame seda teha, kasutades &#8216;referh_token&#8217;. Kui vaatate tabeli veergu &#8216;access_token&#8217;, n\u00e4ete, et see sisaldab ka kirjet &#8216;refresh_token&#8217;. Kasutades &#8216;refresh_token&#8217;, kutsume l\u00f5pp-punkti &#8216;\/ o \/ oauth2 \/ token&#8217; ja taastame juurdep\u00e4\u00e4suloa taustal.<\/p>\n<p>J\u00e4rgmiseks vajate HTML-vormi, mille kaudu saate videot sirvida ja selle serverisse \u00fcleslaadimiseks saata. Loome lihtsa HTML-vormi j\u00e4rgmiselt.<\/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>Vormil on 3 v\u00e4lja &#8211; pealkiri, kirjeldus ja fail. Selle vormi esitamisel peaks video koos lisatud pealkirja ja kirjeldusega teie YouTube&#8217;i kanalile \u00fcles laadima.<\/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>\u00dclaltoodud kood v\u00f5tab HTML-vormilt videofaili ja laadib selle teie YouTube&#8217;i kanalile \u00fcles API kaudu. Kui teie juurdep\u00e4\u00e4suluba on aegunud, taastab see loa taustal ja j\u00e4tkab protsessi seda rikkumata.<\/p>\n<h3>Laadige YouTube&#8217;i videole \u00fcles kohandatud pisipilt<\/h3>\n<p>Kui loote kohandatud rakendust, mis haldab YouTube&#8217;i videoid, siis ilmselt soovite \u00fcles laadida YouTube&#8217;i videole pisipildi. Kohandatud pisipildi \u00fcleslaadimiseks tuleb kasutajatel oma telefoninumber oma YouTube&#8217;i kontoga kinnitada. K\u00fclastage linki<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 kontrollige telefoninumbrit.<\/p>\n<p>Kui olete telefoninumbri kinnitanud, saate v\u00e4heste muudatustega kasutada meie eelmist vormi ja koodi ning seadistada \u00fcleslaaditud video kohandatud pisipildi. Esmalt lisage vormiv\u00e4lja, mis v\u00f5imaldab pilte \u00fcles laadida. YouTube&#8217;i soovitatav pisipildi suurus 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>Esitatava vormi peale oleme koostanud massiivi, <code>$arr_data<\/code>mis sisaldab k\u00f5iki vormiandmeid. Lisage massiivi jaoks uus pildi paar <code>$arr_data<\/code>j\u00e4rgmiselt.<\/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>J\u00e4rgmisena peame p\u00e4rast seda, kui kood on video YouTube&#8217;i \u00fcles laadinud, v\u00f5tma video ID ja m\u00e4\u00e4rama videole kohandatud pisipildi.<\/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>Video kustutage YouTube&#8217;i kanalilt YouTube&#8217;i API abil<\/h3>\n<p>Samuti v\u00f5ite soovida koodi, mis kustutaks videod YouTube&#8217;i API abil. Video kustutamiseks vajate t\u00e4iendavat ulatust, <code>https:\/\/www.googleapis.com\/auth\/youtube<\/code>mille ma juba eespool konfigureerimisfaili lisasin. See t\u00e4hendab, et \u00fclaltoodud toimingute abil loodud p\u00e4\u00e4suluba saab kasutada video kustutamiseks.<\/p>\n<p>Allpool on kood, mis kustutab video teie YouTube&#8217;i kanalilt.<\/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>See selleks! Loodan, et saite teada, kuidas videot YouTube&#8217;i kanalile YouTube&#8217;i API abil \u00fcles laadida. Tahaksin kuulda teie m\u00f5tteid v\u00f5i ettepanekuid allpool olevas kommentaaride jaotises.<\/p>\n<h4>seotud artiklid<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/kuidas-videot-youtube-i-ules-laadida-laraveli-rakenduses\/\" title=\"Kuidas videot YouTube&#039;i \u00fcles laadida Laraveli rakenduses\">Kuidas videot YouTube&#8217;i \u00fcles laadida Laraveli rakenduses<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/kuidas-hankida-youtube-i-videomargendeid-youtube-i-api-abil\/\" title=\"Kuidas hankida YouTube&#039;i videom\u00e4rgendeid YouTube&#039;i API abil\">Kuidas hankida YouTube&#8217;i videom\u00e4rgendeid YouTube&#8217;i API abil<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/youtube-api-kuidas-saada-oma-kanali-youtube-i-videote-loendit\/\" title=\"YouTube API - kuidas saada kanali YouTube&#039;i videote loendit\">YouTube API &#8211; kuidas saada kanali YouTube&#8217;i videote loendit<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/hankige-youtube-i-videoloend-marksonade-jargi-kasutades-youtube-i-otsingu-api-d\/\" title=\"Kuidas hankida YouTube&#039;i videote loend m\u00e4rks\u00f5nade abil YouTube&#039;i otsingu API abil\">Kuidas hankida YouTube&#8217;i videote loend m\u00e4rks\u00f5nade abil YouTube&#8217;i otsingu API abil<\/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 \u00f5ppida YouTube&#8217;i API-d video \u00fcleslaadimiseks? Selles artiklis n\u00e4itame teile, kuidas rakendust registreerida, luua API-v\u00f5tmeid, installida Google&#8217;i kliendikogu.<\/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":[274],"tags":[842],"class_list":["post-26068","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\/26068","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=26068"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/26068\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media\/21640"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media?parent=26068"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/categories?post=26068"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/tags?post=26068"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}