Прямая трансляция API YouTube
Я пытаюсь встроить видео с живого события на сайт своего клиента с помощью API. Я пытаюсь получить список общедоступных видео в прямом эфире, используя youtube.liveBroadcasts.list.
Он работает над построителем запросов API Explorer.
Когда я копирую запрос в браузер, я получаю login required
ошибка.
{
"error": {
"errors": [
{
"domain": "global",
"reason": "required",
"message": "Login Required",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Login Required"
}
}
Вопрос в том:
- Зачем мне проходить аутентификацию, если я запрашиваю публичные прямые трансляции? Ключ API не достаточно?
- Есть ли другой способ получить все публичные события всех пользователей?
3 ответа
Эта конкретная конечная точка API не просто возвращает публичные потоки; он также может возвращать приватные (в дополнение к приватной информации о публичных потоках). По этой причине уровень авторизации находится перед конечной точкой, и поэтому вы должны аутентифицировать пользователя с помощью oAuth2 (чтобы пользователь предоставил вам явное разрешение на доступ к этим данным).
Если вы уверены, что вам когда-либо понадобятся только общедоступные данные о трансляциях, вам следует вместо этого использовать конечную точку списка поиска видео API данных. Вы можете установить параметр "channelId" для идентификатора канала пользователя, установить для параметра "type" значение "video", а затем установить для параметра "eventType" значение "complete", "live" или "предстоящий". Используя параметр "eventType", ваш поиск будет ограничен только вещательными событиями. Так, например, вы можете назвать URL-адрес следующим образом:
GET https://www.googleapis.com/youtube/v3/search?eventType=live&part=snippet&channelId=UCoMdktPbSTixAyNGwb-UYkQ&type=video&key={YOUR_API_KEY}
К сожалению, нет возможности получить завершенные, активные и предстоящие трансляции в одном вызове API, поэтому, если вам нужно все 3, вам нужно будет сделать 3 вызова.
Вы можете использовать стандарт Search/list
конечная точка для возврата только живых событий от определенного канала, без аутентификации в качестве этого канала / пользователя, если вы знаете, что канал channelId
:
part -> snippet
channelId
-> [channelId of the channel/user with the live event]
eventType -> live
type -> video
(требуется при настройке eventType
в live
)
HTTP GET https://www.googleapis.com/youtube/v3/search?part=snippet&channelId={channelId}&eventType=live&type=video&key={YOUR_API_KEY}
Если вы проверите страницу, на которую ссылаетесь youtube.liveBroadcasts.list, вы заметите, что там написано Авторизация.
авторизация
Этот запрос требует авторизации как минимум с одной из следующих областей (подробнее об аутентификации и авторизации).
https://www.googleapis.com/auth/youtube.readonly
https://www.googleapis.com/auth/youtube
Вы не можете использовать открытый ключ с этим. Вы должны пройти аутентификацию, используя Oauth2, чтобы получить доступ к youtube.liveBroadcasts.list.