{"id":28874,"date":"2021-06-02T17:11:00","date_gmt":"2021-06-02T14:11:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28874"},"modified":"2021-10-17T16:31:06","modified_gmt":"2021-10-17T13:31:06","slug":"como-cargar-videos-en-youtube-en-la-aplicacion-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/es\/como-cargar-videos-en-youtube-en-la-aplicacion-laravel\/","title":{"rendered":"C\u00f3mo cargar videos en YouTube en la aplicaci\u00f3n Laravel"},"content":{"rendered":"<p>Recientemente, uno de nuestros lectores pregunt\u00f3 c\u00f3mo subir un video en YouTube desde la aplicaci\u00f3n Laravel. Quer\u00edan construir un sistema que pudiera cargar videos de YouTube desde la aplicaci\u00f3n Laravel. Al hacerlo, no necesitan dar acceso a su cuenta de YouTube a los miembros del equipo que administran los videos de la cuenta de YouTube.<\/p>\n<p>En el pasado, escrib\u00ed un art\u00edculo que explica c\u00f3mo <a href=\"https:\/\/themewp.inform.click\/es\/como-usar-la-api-de-youtube-para-cargar-videos-en-el-canal-de-youtube\/\" title=\"cargar videos en YouTube usando la API de YouTube en PHP\" >cargar videos en YouTube usando la API de YouTube en PHP<\/a>. En este art\u00edculo veremos c\u00f3mo subir un video en YouTube desde la aplicaci\u00f3n Laravel.<\/p>\n<h3>Registre una aplicaci\u00f3n y obtenga credenciales<\/h3>\n<p>Para comenzar, debe tener una cuenta de Google. En la cuenta de Google, debe registrar su aplicaci\u00f3n y obtener las claves API.<\/p>\n<p>A continuaci\u00f3n se muestran los pasos para registrar una aplicaci\u00f3n y obtener las claves API.<\/p>\n<ul>\n<li>Vaya a la Consola para desarrolladores de 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>Crea un nuevo proyecto. Tambi\u00e9n puede seleccionar un proyecto existente.<\/li>\n<li>Escriba un nombre de su proyecto. Google Console crear\u00e1 un ID de proyecto \u00fanico para usted.<\/li>\n<li>Al crear un proyecto, aparecer\u00e1 en la parte superior de la barra lateral izquierda.<\/li>\n<li>Haga clic en Biblioteca en el men\u00fa de la izquierda. Ver\u00e1 una lista de API de Google. Habilite la API de datos de YouTube.<\/li>\n<li>A continuaci\u00f3n, en el men\u00fa de la izquierda, haga clic en Credenciales. Seleccione ID de cliente de Oauth en Crear credenciales. Elija el bot\u00f3n de opci\u00f3n para la aplicaci\u00f3n web.<\/li>\n<li>Dar el nombre. En Or\u00edgenes de JavaScript autorizados, ingrese la URL de su dominio. En los URI de redireccionamiento autorizados, agregue el enlace de la URL de redireccionamiento como <a href=\"http:\/\/localhost:8000\/youtube\/callback\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http: \/\/ localhost: 8000 \/ youtube \/ callback<\/a>. Estoy pasando mi URL local aqu\u00ed. Debe ajustar esta URL con su dominio.<\/li>\n<li>Finalmente, haga clic en el bot\u00f3n Crear. Obtendr\u00e1 una identificaci\u00f3n de cliente y un secreto de cliente en la ventana emergente. Copie estos detalles. Lo necesitaremos pronto.<\/li>\n<\/ul>\n<h3>Instalar y configurar la biblioteca de GitHub<\/h3>\n<p>Una vez que haya creado la aplicaci\u00f3n, lo siguiente que debe hacer es instalar la biblioteca <a href=\"https:\/\/github.com\/JoeDawson\/youtube\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">joedawson \/ youtube<\/a>. Para la instalaci\u00f3n de esta biblioteca, abra la terminal en el directorio ra\u00edz de su proyecto y ejecute el comando:<\/p>\n<pre><code>composer require dawson\/youtube<\/code><\/pre>\n<p>Despu\u00e9s de instalar la biblioteca, debe registrar el proveedor de servicios y los alias en el <code>config\/app.php<\/code>archivo.<\/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>A continuaci\u00f3n, publique las <code>youtube.php<\/code>migraciones y utilizando el siguiente comando:<\/p>\n<pre><code>php artisan vendor:publish --provider=\"DawsonYoutubeYoutubeServiceProvider\"<\/code><\/pre>\n<p>El comando anterior mueve el archivo a la carpeta <code>youtube.php<\/code>&#8216;config&#8217; y el archivo de migraci\u00f3n a la carpeta &#8216;base de datos \/ migraciones&#8217;. Ahora, debe ejecutar el comando de migraci\u00f3n que crear\u00e1 una <code>youtube_access_tokens<\/code>tabla en la base de datos.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Esta tabla almacenar\u00eda el token de acceso y el token de actualizaci\u00f3n despu\u00e9s de autorizar la cuenta de YouTube. El access_token es necesario cuando interact\u00faas con la API de YouTube. El token de acceso act\u00faa como un identificador de su cuenta de YouTube. El token de acceso tiene una vida \u00fatil corta, por lo que para obtener el nuevo token de acceso, esta biblioteca usa un token de actualizaci\u00f3n. No necesita preocuparse por insertar estos tokens en una tabla. La biblioteca lo har\u00e1 en segundo plano.<\/p>\n<p>Hemos copiado las credenciales de la API que deben colocarse dentro de la aplicaci\u00f3n Laravel. Abra el <code>.env<\/code>archivo y agregue su ID de cliente y su secreto de cliente de la siguiente manera:<\/p>\n<pre><code>GOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=<\/code><\/pre>\n<p>Si est\u00e1 realizando alg\u00fan cambio en el archivo de entorno, debe borrar la configuraci\u00f3n con el comando:<\/p>\n<pre><code>php artisan config:clear<\/code><\/pre>\n<h4>Autorizaci\u00f3n de la cuenta de Google<\/h4>\n<p>Por razones de seguridad, las rutas para autorizar la cuenta de YouTube con su aplicaci\u00f3n Laravel est\u00e1n deshabilitadas por defecto. Deber\u00e1 habilitarlo desde su <code>config\/youtube.php<\/code>. Abra <code>config\/youtube.php<\/code>y habil\u00edtelo simplemente reemplazando el valor falso con verdadero.<\/p>\n<pre><code>...\n'enabled' =&gt; true, \/\/set it to 'false' after authorization<\/code><\/pre>\n<p>Ahora puede autorizar su cuenta usando la URL YOUR_DOMAIN_URL \/ youtube \/ auth en el navegador. Redirigir\u00e1 a la p\u00e1gina de inicio de sesi\u00f3n de Google para autenticar su cuenta. Completa el proceso. Una vez que la autenticaci\u00f3n se haya realizado correctamente, lo redireccionar\u00e1 a su aplicaci\u00f3n Laravel. Consulte la <code>youtube_access_tokens<\/code>tabla y deber\u00eda ver los tokens insertados en la columna &#8216;access_token&#8217;. Este es un proceso de una sola vez. La biblioteca generar\u00e1 autom\u00e1ticamente access_token en segundo plano incluso si est\u00e1 vencido. El usuario no necesita autorizar su cuenta nuevamente.<\/p>\n<h3>Cargar video en la cuenta de YouTube en la aplicaci\u00f3n Laravel<\/h3>\n<p>En esta etapa, est\u00e1 listo con el token de acceso. Ahora cree un formulario para buscar el archivo de video y enviarlo a YouTube. Creemos un controlador ejecutando el siguiente comando.<\/p>\n<pre><code>php artisan make:controller VideoController --resource<\/code><\/pre>\n<p>Defina las rutas de la <code>VideoController<\/code>siguiente manera.<\/p>\n<p><strong>rutas \/ web.php<\/strong><\/p>\n<pre><code>&lt;?php\n...\nRoute::resource('video', 'VideoController');<\/code><\/pre>\n<p>Cree una vista <code>resources\/views\/video.blade.php<\/code>y agregue el siguiente c\u00f3digo en ella.<\/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>Llame a este archivo de vista desde el <code>index<\/code>m\u00e9todo de nuestro controlador.<\/p>\n<pre><code>public function index()\n{\n\u00a0\u00a0\u00a0\u00a0return view('video');\n}<\/code><\/pre>\n<p>Ahora, cuando visite YOUR_DOMAIN_URL \/ video, ver\u00e1 un formulario que contiene la entrada de archivo, t\u00edtulo, descripci\u00f3n y bot\u00f3n de env\u00edo.<\/p>\n<p>Para llamar a la API de YouTube, agregue una clase de YouTube en un controlador. Y en el <code>store<\/code>m\u00e9todo escriba el c\u00f3digo para cargar un video en YouTube de la siguiente manera.<\/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>Aqu\u00ed estamos pasando un archivo de video, t\u00edtulo y descripci\u00f3n de nuestro formulario. Este c\u00f3digo simplemente carga su video en YouTube e imprime la identificaci\u00f3n del video de YouTube.<\/p>\n<p>Espero que entiendas c\u00f3mo cargar un video en YouTube en la aplicaci\u00f3n Laravel. El usuario tambi\u00e9n puede actualizar y eliminar los videos usando el c\u00f3digo provisto por la biblioteca. Puede leer m\u00e1s sobre esto en su <a href=\"https:\/\/github.com\/joedawson\/youtube\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documentaci\u00f3n<\/a>.<\/p>\n<h4>Art\u00edculos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/integracion-de-paypal-payments-pro-en-laravel\/\" title=\"Integraci\u00f3n de PayPal Payments Pro en Laravel\">Integraci\u00f3n de PayPal Payments Pro en Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-crear-un-blog-con-laravel\/\" title=\"C\u00f3mo crear un blog con Laravel\">C\u00f3mo crear un blog con Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-cargar-y-recortar-una-imagen-en-laravel-usando-imgareaselect-y-la-biblioteca-de-imagenes-de-intervencion\/\" title=\"C\u00f3mo cargar y recortar im\u00e1genes en Laravel\">C\u00f3mo cargar y recortar im\u00e1genes en Laravel<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfQuieres subir videos en YouTube desde tu aplicaci\u00f3n Laravel? En este art\u00edculo, te muestro c\u00f3mo subir videos en YouTube desde 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":[495],"tags":[849],"class_list":["post-28874","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/28874","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/comments?post=28874"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/28874\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media\/20375"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media?parent=28874"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/categories?post=28874"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/tags?post=28874"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}