{"id":28911,"date":"2021-06-02T17:20:00","date_gmt":"2021-06-02T14:20:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28911"},"modified":"2021-10-18T03:37:57","modified_gmt":"2021-10-18T00:37:57","slug":"jak-przeslac-wideo-na-youtube-w-aplikacji-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/jak-przeslac-wideo-na-youtube-w-aplikacji-laravel\/","title":{"rendered":"Jak przes\u0142a\u0107 wideo na YouTube w aplikacji Laravel"},"content":{"rendered":"<p>Ostatnio jeden z naszych czytelnik\u00f3w zapyta\u0142, jak wgra\u0107 film na YouTube z aplikacji Laravel. Chcieli zbudowa\u0107 system, kt\u00f3ry mo\u017ce przesy\u0142a\u0107 filmy z YouTube z poziomu aplikacji Laravel. W ten spos\u00f3b nie musz\u0105 udziela\u0107 dost\u0119pu do swojego konta YouTube cz\u0142onkom zespo\u0142u, kt\u00f3rzy zarz\u0105dzaj\u0105 filmami wideo na koncie YouTube.<\/p>\n<p>W przesz\u0142o\u015bci napisa\u0142em artyku\u0142, kt\u00f3ry wyja\u015bnia jak <a href=\"https:\/\/themewp.inform.click\/pl\/jak-korzystac-z-interfejsu-api-youtube-do-przesylania-filmow-na-kanal-youtube\/\" title=\"przesy\u0142a\u0107 wideo na YouTube za pomoc\u0105 API YouTube w PHP\" >przesy\u0142a\u0107 wideo na YouTube za pomoc\u0105 API YouTube w PHP<\/a>. W tym artykule zobaczymy, jak wgra\u0107 film na YouTube z aplikacji Laravel.<\/p>\n<h3>Zarejestruj aplikacj\u0119 i uzyskaj po\u015bwiadczenia<\/h3>\n<p>Aby rozpocz\u0105\u0107, musisz mie\u0107 konto Google. Na koncie Google musisz zarejestrowa\u0107 swoj\u0105 aplikacj\u0119 i uzyska\u0107 klucze API.<\/p>\n<p>Poni\u017cej znajduj\u0105 si\u0119 kroki, aby zarejestrowa\u0107 aplikacj\u0119 i pobra\u0107 klucze API.<\/p>\n<ul>\n<li>Przejd\u017a do Konsoli programisty Google <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>Utw\u00f3rz nowy projekt. Mo\u017cesz tak\u017ce wybra\u0107 istniej\u0105cy projekt.<\/li>\n<li>Wpisz nazw\u0119 swojego projektu. Konsola Google utworzy dla Ciebie unikalny identyfikator projektu.<\/li>\n<li>Po utworzeniu projektu pojawi si\u0119 on na g\u00f3rze lewego paska bocznego.<\/li>\n<li>Kliknij Biblioteka z lewego menu. Zobaczysz list\u0119 interfejs\u00f3w Google API. W\u0142\u0105cz interfejs API danych YouTube.<\/li>\n<li>Nast\u0119pnie z lewego menu kliknij Po\u015bwiadczenia. Wybierz identyfikator klienta Oauth w obszarze Utw\u00f3rz po\u015bwiadczenia. Wybierz przycisk radiowy dla aplikacji internetowej.<\/li>\n<li>Podaj imi\u0119. W obszarze Autoryzowane \u017ar\u00f3d\u0142a JavaScript wpisz adres URL swojej domeny. W autoryzowanych identyfikatorach URI przekierowania dodaj link do adresu URL przekierowania jako <a href=\"http:\/\/localhost:8000\/youtube\/callback\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http:\/\/localhost:8000\/youtube\/callback<\/a>. Podaj\u0119 tutaj m\u00f3j lokalny adres URL. Powiniene\u015b dostosowa\u0107 ten adres URL w swojej domenie.<\/li>\n<li>Na koniec kliknij przycisk Utw\u00f3rz. W wyskakuj\u0105cym okienku otrzymasz identyfikator klienta i klucz klienta. Skopiuj te dane. Wkr\u00f3tce b\u0119dziemy tego potrzebowa\u0107.<\/li>\n<\/ul>\n<h3>Zainstaluj i skonfiguruj bibliotek\u0119 GitHub<\/h3>\n<p>Po utworzeniu aplikacji nast\u0119pn\u0105 rzecz\u0105 do zrobienia jest zainstalowanie biblioteki <a href=\"https:\/\/github.com\/JoeDawson\/youtube\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">joedawson\/youtube<\/a>. Aby zainstalowa\u0107 t\u0119 bibliotek\u0119, otw\u00f3rz terminal w katalogu g\u0142\u00f3wnym projektu i uruchom polecenie:<\/p>\n<pre><code>composer require dawson\/youtube<\/code><\/pre>\n<p>Po zainstalowaniu biblioteki nale\u017cy zarejestrowa\u0107 dostawc\u0119 us\u0142ug i aliasy w <code>config\/app.php<\/code>pliku.<\/p>\n<p><strong>config\/app.php<\/strong><\/p>\n<pre><code>....\n'providers' =&gt; [\n\u00a0\u00a0\u00a0\u00a0...\n\u00a0\u00a0\u00a0\u00a0DawsonYoutubeYoutubeServiceProvider::class,\n],\n....\n'aliases' =&gt; [\n\u00a0\u00a0\u00a0\u00a0...\n\u00a0\u00a0\u00a0\u00a0'Youtube' =&gt; DawsonYoutubeFacadesYoutube::class,\n],<\/code><\/pre>\n<p>Nast\u0119pnie opublikuj <code>youtube.php<\/code>migracje i za pomoc\u0105 poni\u017cszego polecenia:<\/p>\n<pre><code>php artisan vendor:publish --provider=\"DawsonYoutubeYoutubeServiceProvider\"<\/code><\/pre>\n<p>Powy\u017csze polecenie przenosi plik do folderu <code>youtube.php<\/code>&#8217;config&#8217;, a plik migracji do folderu 'database\/migrations&#8217;. Teraz musisz uruchomi\u0107 polecenie migracji, kt\u00f3re utworzy tabel\u0119 <code>youtube_access_tokens<\/code>tabeli w bazie danych.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Ta tabela przechowuje token dost\u0119pu i token od\u015bwie\u017cania po autoryzacji konta YouTube. Access_token jest potrzebny podczas interakcji z interfejsem API YouTube. Token dost\u0119pu dzia\u0142a jako identyfikator Twojego konta YouTube. Token dost\u0119pu ma kr\u00f3tki okres istnienia, wi\u0119c aby uzyska\u0107 nowy token dost\u0119pu, ta biblioteka u\u017cywa tokenu od\u015bwie\u017cania. Nie musisz si\u0119 martwi\u0107 o wstawianie tych token\u00f3w do tabeli. Biblioteka zrobi to w tle.<\/p>\n<p>Skopiowali\u015bmy dane uwierzytelniaj\u0105ce API, kt\u00f3re nale\u017cy umie\u015bci\u0107 w aplikacji Laravel. Otw\u00f3rz <code>.env<\/code>plik i dodaj sw\u00f3j identyfikator klienta i klucz klienta w nast\u0119puj\u0105cy spos\u00f3b:<\/p>\n<pre><code>GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=<\/code><\/pre>\n<p>W przypadku dokonywania jakichkolwiek zmian w pliku \u015brodowiska nale\u017cy wyczy\u015bci\u0107 konfiguracj\u0119 za pomoc\u0105 polecenia:<\/p>\n<pre><code>php artisan config:clear<\/code><\/pre>\n<h4>Autoryzacja konta Google<\/h4>\n<p>Ze wzgl\u0119d\u00f3w bezpiecze\u0144stwa trasy do autoryzacji konta YouTube za pomoc\u0105 aplikacji Laravel s\u0105 domy\u015blnie wy\u0142\u0105czone. Musisz go w\u0142\u0105czy\u0107 w swoim <code>config\/youtube.php<\/code>. Otw\u00f3rz <code>config\/youtube.php<\/code>i w\u0142\u0105cz go, po prostu zast\u0119puj\u0105c warto\u015b\u0107 fa\u0142szyw\u0105 prawd\u0105.<\/p>\n<pre><code>...\n'enabled' =&gt; true, \/\/set it to 'false' after authorization<\/code><\/pre>\n<p>Mo\u017cesz teraz autoryzowa\u0107 swoje konto, u\u017cywaj\u0105c adresu URL YOUR_DOMAIN_URL\/youtube\/auth w przegl\u0105darce. Przekieruje do strony logowania Google, aby uwierzytelni\u0107 Twoje konto. Zako\u0144cz proces. Po pomy\u015blnym uwierzytelnieniu nast\u0105pi przekierowanie z powrotem do aplikacji Laravel. Sprawd\u017a <code>youtube_access_tokens<\/code>tabel\u0119 i powiniene\u015b zobaczy\u0107 tokeny wstawione w kolumnie 'access_token&#8217;. To jest jednorazowy proces. Biblioteka automatycznie wygeneruje access_token w tle, nawet je\u015bli wygas\u0142. U\u017cytkownik nie musi ponownie autoryzowa\u0107 swojego konta.<\/p>\n<h3>Prze\u015blij wideo na konto YouTube w aplikacji Laravel<\/h3>\n<p>Na tym etapie jeste\u015b gotowy z tokenem dost\u0119pu. Teraz utw\u00f3rz formularz do przegl\u0105dania pliku wideo i wy\u015blij go do YouTube. Stw\u00f3rzmy kontroler, uruchamiaj\u0105c poni\u017csze polecenie.<\/p>\n<pre><code>php artisan make:controller VideoController --resource<\/code><\/pre>\n<p>Zdefiniuj trasy <code>VideoController<\/code>w nast\u0119puj\u0105cy spos\u00f3b.<\/p>\n<p><strong>trasy\/web.php<\/strong><\/p>\n<pre><code>&lt;?php\n...\nRoute::resource('video', 'VideoController');<\/code><\/pre>\n<p>Utw\u00f3rz widok <code>resources\/views\/video.blade.php<\/code>i dodaj w nim poni\u017cszy kod.<\/p>\n<pre><code>&lt;form action=\"{{ url('video') }}\" 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=\"description\" 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=\"video\" \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;button type=\"submit\" class=\"btn btn-default\"&gt;Submit&lt;\/button&gt;\n\u00a0\u00a0\u00a0\u00a0{{ csrf_field() }}\n&lt;\/form&gt;<\/code><\/pre>\n<p>Wywo\u0142aj ten plik widoku z <code>index<\/code>metody naszego kontrolera.<\/p>\n<pre><code>public function index()\n{\n\u00a0\u00a0\u00a0\u00a0return view('video');\n}<\/code><\/pre>\n<p>Teraz, gdy odwiedzisz TWOJ\u0104_DOMAIN\u0118_URL\/film, zobaczysz formularz zawieraj\u0105cy dane wej\u015bciowe pliku, tytu\u0142, opis i przycisk przesy\u0142ania.<\/p>\n<p>Aby wywo\u0142a\u0107 API YouTube, dodaj klas\u0119 YouTube w kontrolerze. A w <code>store<\/code>metodzie napisz kod do przes\u0142ania wideo na YouTube w nast\u0119puj\u0105cy spos\u00f3b.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\nuse IlluminateHttpRequest;\nuse Youtube;\n\u00a0\nclass VideoController extends Controller\n{\n\u00a0\u00a0\u00a0\u00a0....\n\u00a0\u00a0\u00a0\u00a0public function store(Request $request)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$video = Youtube::upload($request-&gt;file('video')-&gt;getPathName(), [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'title'\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 =&gt; $request-&gt;input('title'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'description' =&gt; $request-&gt;input('description')\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return \"Video uploaded successfully. Video ID is \". $video-&gt;getVideoId();\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Tutaj przekazujemy plik wideo, tytu\u0142 i opis z naszego formularza. Ten kod po prostu przesy\u0142a Tw\u00f3j film do YouTube i drukuje identyfikator wideo YouTube.<\/p>\n<p>Mam nadziej\u0119, \u017ce rozumiesz przesy\u0142anie wideo na YouTube w aplikacji Laravel. U\u017cytkownik mo\u017ce r\u00f3wnie\u017c aktualizowa\u0107 i usuwa\u0107 filmy za pomoc\u0105 kodu dostarczonego przez bibliotek\u0119. Mo\u017cesz przeczyta\u0107 wi\u0119cej na ten temat w ich <a href=\"https:\/\/github.com\/joedawson\/youtube\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentacji<\/a>.<\/p>\n<h4>Powi\u0105zane artyku\u0142y<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/integracja-paypal-payments-pro-w-laravel\/\" title=\"Integracja PayPal Payments Pro w Laravel\">Integracja PayPal Payments Pro w Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-stworzyc-bloga-z-laravel\/\" title=\"Jak stworzy\u0107 bloga z Laravel\">Jak stworzy\u0107 bloga z Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-przeslac-i-przyciac-obraz-w-laravel-za-pomoca-imgareaselect-i-biblioteki-obrazow-interwencyjnych\/\" title=\"Jak przesy\u0142a\u0107 i przycina\u0107 obrazy w Laravel?\">Jak przesy\u0142a\u0107 i przycina\u0107 obrazy w Laravel?<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Czy chcesz przes\u0142a\u0107 wideo na YouTube ze swojej aplikacji Laravel? W tym artykule poka\u017c\u0119 Ci, jak wgra\u0107 film na YouTube z Laravel<\/p>\n","protected":false},"author":1,"featured_media":20375,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[501],"tags":[847],"class_list":["post-28911","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/28911","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/comments?post=28911"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/28911\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/20375"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=28911"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=28911"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=28911"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}