Прямая трансляция 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"
 }
}

Вопрос в том:

  1. Зачем мне проходить аутентификацию, если я запрашиваю публичные прямые трансляции? Ключ API не достаточно?
  2. Есть ли другой способ получить все публичные события всех пользователей?

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.