Как загрузить видео на YouTube в приложении Laravel
Недавно один из наших читателей спросил, как загрузить видео на YouTube из приложения Laravel. Они хотели создать систему, которая может загружать видео на YouTube из приложения Laravel. При этом им не нужно предоставлять доступ к своей учетной записи YouTube членам команды, которые управляют видео для учетной записи YouTube.
Раньше я писал статью, в которой объясняется, как загружать видео на YouTube с помощью API YouTube на PHP. В этой статье мы увидим, как загрузить видео на YouTube из приложения Laravel.
Зарегистрируйте приложение и получите учетные данные
Для начала вам потребуется учетная запись Google. В аккаунте Google необходимо зарегистрировать свое приложение и получить ключи API.
Ниже приведены шаги для регистрации приложения и получения ключей API.
- Перейдите в консоль разработчика Google. https://console.developers.google.com.
- Создайте новый проект. Вы также можете выбрать существующий проект.
- Введите название вашего проекта. Консоль Google создаст для вас уникальный идентификатор проекта.
- После создания проекта он появится в верхней части левой боковой панели.
- Нажмите «Библиотека» в левом меню. Вы увидите список API Google. Включите API данных YouTube.
- Затем в левом меню нажмите Учетные данные. Выберите Идентификатор клиента Oauth в разделе Создать учетные данные. Выберите переключатель для веб-приложения.
- Дайте имя. В разделе «Авторизованные источники JavaScript» введите URL-адрес вашего домена. В URI авторизованного перенаправления добавьте ссылку URL перенаправления как http: // localhost: 8000 / youtube / callback. Я передаю здесь свой локальный URL. Вы должны скорректировать этот URL для своего домена.
- Наконец, нажмите кнопку «Создать». Во всплывающем окне вы получите идентификатор клиента и секрет клиента. Скопируйте эти данные. Скоро нам это понадобится.
Установить и настроить библиотеку GitHub
После создания приложения вам необходимо установить библиотеку joedawson / youtube. Для установки этой библиотеки откройте терминал в корневом каталоге вашего проекта и выполните команду:
composer require dawson/youtube
После установки библиотеки необходимо зарегистрировать в config/app.php
файле поставщика услуг и псевдонимы .
config / app.php
....
'providers' => [
...
DawsonYoutubeYoutubeServiceProvider::class,
],
....
'aliases' => [
...
'Youtube' => DawsonYoutubeFacadesYoutube::class,
],
Затем опубликуйте youtube.php
миграции и с помощью следующей команды:
php artisan vendor:publish --provider="DawsonYoutubeYoutubeServiceProvider"
Приведенная выше команда перемещает файл youtube.php
в папку config, а файл миграции – в папку database / migrations. Теперь вам нужно запустить команду миграции, которая создаст таблицу youtube_access_tokens
таблицы в базе данных.
php artisan migrate
В этой таблице будет храниться токен доступа и токен обновления после авторизации учетной записи YouTube. Access_token необходим, когда вы взаимодействуете с YouTube API. Токен доступа действует как идентификатор вашей учетной записи YouTube. У токена доступа короткий срок жизни, поэтому для получения нового токена доступа эта библиотека использует токен обновления. Вам не нужно беспокоиться о том, чтобы вставить эти токены в таблицу. Библиотека сделает это в фоновом режиме.
Мы скопировали учетные данные API, которые необходимо поместить в приложение Laravel. Откройте .env
файл и добавьте свой идентификатор клиента и секрет клиента следующим образом:
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
Если вы вносите какие-либо изменения в файл среды, вы должны очистить конфигурацию с помощью команды:
php artisan config:clear
Авторизация аккаунта Google
По соображениям безопасности маршруты для авторизации учетной записи YouTube с вашим приложением Laravel по умолчанию отключены. Вам нужно будет включить его из вашего config/youtube.php
. Откройте config/youtube.php
и включите его, просто заменив значение false на true.
...
'enabled' => true, //set it to 'false' after authorization
Теперь вы можете авторизовать свою учетную запись, используя URL-адрес YOUR_DOMAIN_URL / youtube / auth в браузере. Он будет перенаправлен на страницу входа в Google для аутентификации вашей учетной записи. Завершите процесс. При успешной аутентификации вы вернетесь в свое приложение Laravel. Проверьте youtube_access_tokens
таблицу, и вы должны увидеть токены, вставленные в столбец access_token. Это однократный процесс. Библиотека автоматически сгенерирует access_token в фоновом режиме, даже если срок его действия истек. Пользователю не нужно повторно авторизовать свою учетную запись.
Загрузите видео в аккаунт YouTube в приложении Laravel
На этом этапе у вас есть токен доступа. Теперь создайте форму для просмотра видеофайла и отправки его на YouTube. Давайте создадим контроллер, выполнив следующую команду.
php artisan make:controller VideoController --resource
Определите маршруты VideoController
следующим образом.
маршруты / web.php
<?php
...
Route::resource('video', 'VideoController');
Создайте представление resources/views/video.blade.php
и добавьте в него приведенный ниже код.
<form action="{{ url('video') }}" method="post" enctype="multipart/form-data">
<p><input type="text" name="title" placeholder="Enter Video Title" /></p>
<p><textarea name="description" cols="30" rows="10" placeholder="Video description"></textarea></p>
<p><input type="file" name="video" /></p>
<button type="submit" class="btn btn-default">Submit</button>
{{ csrf_field() }}
</form>
Вызовите этот файл представления из index
метода нашего контроллера.
public function index()
{
return view('video');
}
Теперь, когда вы посетите YOUR_DOMAIN_URL / video, вы увидите форму, содержащую ввод файла, заголовок, описание и кнопку отправки.
Чтобы вызвать API YouTube, добавьте в контроллер класс YouTube. А в store
методе напишите код для загрузки видео на YouTube следующим образом.
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use Youtube;
class VideoController extends Controller
{
....
public function store(Request $request)
{
$video = Youtube::upload($request->file('video')->getPathName(), [
'title' => $request->input('title'),
'description' => $request->input('description')
]);
return "Video uploaded successfully. Video ID is ". $video->getVideoId();
}
}
Здесь мы передаем видеофайл, заголовок и описание из нашей формы. Этот код просто загружает ваше видео на YouTube и печатает идентификатор видео YouTube.
Надеюсь, вы понимаете, как загрузить видео на YouTube в приложении Laravel. Пользователь также может обновлять и удалять видео, используя код, предоставленный библиотекой. Вы можете прочитать об этом больше в их документации.
Статьи по Теме
- Интеграция PayPal Payments Pro в Laravel
- Как создать блог с Laravel
- Как загружать и обрезать изображения в Laravel