Загружайте видео на несколько каналов через Youtube API v3

Я пытаюсь загрузить видео на несколько каналов через API данных Youtube v3.

Я могу сделать это правильно при загрузке видео на основной канал по умолчанию, однако не могу, когда мы пытаемся загрузить их на другой канал, который является частью той же учетной записи Youtube (поэтому учетные данные OAuth2 должны быть действительными).

Согласно документам, я должен передать API следующие параметры: onBehalfOfContentOwnerChannel и onBehalfOfContentOwner при вызове конечной точки: /youtube/v3/video/insert

Дело в том, что мы не имеем четкого представления о значении onBehalfOfContentOwner. Это основной адрес электронной почты, связанный с владельцем? Как мы можем получить это? Это требуется или нет? Не достаточно ли передать только идентификатор целевого канала при загрузке?

С другой стороны, я создал несколько каналов из Youtube CMS для партнеров, но я не могу получить их при вызове API через: youtube/v3/channel? Part=contentDetails&mine=true. Я вижу только один уникальный канал (основной).

2 ответа

Учетная запись CMS здесь необязательна (поскольку пользователь, у которого есть несколько каналов YouTube, связанных с одной учетной записью google, может не обязательно иметь учетную запись CMS, например, у меня ее нет).

Перед созданием клиента API нам необходимо получить учетные данные, используяoauth2 flowаутентификация, которая требуетclient_secrets_file(json загружен для клиентского приложения, созданного в облаке Google), как это сделано в следующем фрагменте кода сgoogle-api-python-client.

      scopes = ["https://www.googleapis.com/auth/youtube.upload"]
credentials = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file(
              client_secrets_file, scopes).run_console()

Теперь, как часть процедуры аутентификации,

  • пользователю сначала предлагается выбрать учетную запись google и
  • затем пользователю предлагается выбрать учетную запись бренда (канал YouTube), когда у него есть несколько каналов YouTube, использующих одну и ту же учетную запись Google, как показано ниже:

После успешной аутентификации пользователь сможет загружать видео на выбранный канал только с помощью клиента API (YoutubeDataAPIClient) созданный. Следующееpythonфрагмент кода показывает, как API данных youtube v3 (insert) можно использовать для загрузки тестового видео (на выбранный канал).

      youtube = googleapiclient.discovery.build("youtube", "v3", credentials=credentials) 
request = youtube.videos().insert(
    part="snippet,status",
    body={
      "snippet": {
        "description": "A test video",
        "title": "test video",
      },
      "status": {
        "privacyStatus": "public"
      }
    },        
    media_body=MediaFileUpload('test_video.mp4') # path to the test video to be uploaded
)
response = request.execute()

Вы предоставляете свои учетные данные аутентификации CMS в onBehalfOfContentOwner, который может быть использован только в правильно авторизованном запросе.

Обратите внимание, что, поскольку вы создали каналы для разных партнеров, запрос должен быть авторизован с использованием учетной записи CMS, которая связана с владельцем контента, указанным вonBehalfOfContentOwner, Наконец, канал, который onBehalfOfContentOwnerChannel Указанное значение параметра должно быть связано с владельцем контента, который onBehalfOfContentOwner (Идентификатор канала YouTube для канала, к которому добавляется видео).

Если вы используете Google+ для управления всеми этими учетными записями, читайте здесь для получения дополнительной информации. Если вы являетесь владельцем контента, который управляет всеми каналами, вы можете использовать API идентификатора контента.

Другие вопросы по тегам