Интеграция YouTube Data API с сайтом
YouTube Data API v3 позволяет отображать видео канала на сайте, получать статистику, вставлять плееры. Используется для корпоративных сайтов, блогов, образовательных платформ.
Получение видео канала
$apiKey = config('services.youtube.api_key');
$channelId = 'UCxxxxxx';
// Получаем ID плейлиста загрузок канала
$channelResp = Http::get('https://www.googleapis.com/youtube/v3/channels', [
'part' => 'contentDetails',
'id' => $channelId,
'key' => $apiKey,
])->json();
$uploadsPlaylistId = $channelResp['items'][0]['contentDetails']['relatedPlaylists']['uploads'];
// Получаем список видео
$videosResp = Http::get('https://www.googleapis.com/youtube/v3/playlistItems', [
'part' => 'snippet,contentDetails',
'playlistId' => $uploadsPlaylistId,
'maxResults' => 12,
'key' => $apiKey,
])->json();
$videos = array_map(fn($item) => [
'id' => $item['contentDetails']['videoId'],
'title' => $item['snippet']['title'],
'description' => $item['snippet']['description'],
'thumbnail' => $item['snippet']['thumbnails']['high']['url'],
'published' => $item['snippet']['publishedAt'],
'embed_url' => "https://www.youtube.com/embed/{$item['contentDetails']['videoId']}",
], $videosResp['items']);
Кэширование
API квота: 10 000 единиц в день. Список видео — 1 единица на запрос. Кэшируем на час:
$videos = Cache::remember('youtube_videos', 3600, function () use (...) {
// ... запрос к API
});
Встраивание через Facade API
<iframe
src="https://www.youtube-nocookie.com/embed/VIDEO_ID?rel=0&modestbranding=1"
frameborder="0"
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
loading="lazy">
</iframe>
youtube-nocookie.com не устанавливает куки до начала воспроизведения — важно для GDPR.
Время реализации: 1 рабочий день.







