Apps Script продолжает запрашивать офлайн разрешение с помощью API Youtube

Я пишу отдельный скрипт Google Apps, который будет запрашивать API отчетов YouTube и возвращать аналитику в мои видео.

Когда я аутентифицируюсь в Apps Script на одной из страниц Google+, которые мы используем для управления нашими различными каналами Youtube, Apps Script продолжает просить меня авторизовать скрипт для автономного доступа.

Когда я пытаюсь сделать то же самое в новом проекте сценария с моей личной учетной записью Gmail, все работает нормально. Хотя есть проблема с этим. Когда я запрашиваю Youtube.Channels.list через свою учетную запись, я не получаю список других принадлежащих мне каналов, а только свой личный канал.

Я также попробовал это с помощью функции try it в документации Youtube со страницей Google+, и все работает отлично.

Для этого сценария в консоли разработчика Google включены и включены следующие расширенные службы:

  1. API данных Youtube
  2. API YouTube Analytics
  3. Google+ API (на всякий случай)

Я также попытался специально установить идентификатор канала для канала ==xxx и удалить переменные MyChannels и channel, и я все еще получаю те же результаты.

Что может быть возможным решением?

Вот пример моего кода:

function youTubeAnalytics() {
     var myChannels = YouTube.Channels.list('id', {mine: true});
     var channel = myChannels.items[0];
     var channelId = channel.id;
     var analyticsResponse = YouTubeAnalytics.Reports.query(
     'channel==' + channelId,
     'estimatedMinutesWatched,views,likes,subscribersGained',
     {dimensions: 'video','max-results': '200',sort: '-views'});
     }

2 ответа

Решение

В документации Channel Reports говорится:

пользователь, авторизующий запрос, должен быть владельцем канала

Эта проблема возникает, если ваш скрипт приложений не запускался владельцем канала, т.е. менеджером канала. Другими словами, если ваш скрипт приложений написан с использованием вашей учетной записи Google, которая также используется как владелец канала YouTube, у вас все в порядке, в противном случае вы столкнетесь с проблемами аутентификации.

Решение, которое я задокументировал, заключается в использовании скрипта Google Apps для прокси-отчетов отчетов YouTube Analytics, который дает более подробную информацию об этом.

Еще один фактор, который может создавать проблемы - отсутствует ваш запрос YouTubeAnalytics. start-date а также end-date - Отчет: документация по запросу указывает их как обязательные параметры. Чтобы исправить это, ваша функция может быть переписана как:

function youTubeAnalytics() {
  var myChannels = YouTube.Channels.list('id', {mine: true});
  var channel = myChannels.items[0];
  var channelId = channel.id;
  var analyticsResponse = YouTubeAnalytics.Reports.query(
  'channel==' + channelId, 
  '2010-01-01', 
  Utilities.formatDate(new Date(), 'GMT', 'yyyy-MM-dd'), 
  'estimatedMinutesWatched,views,likes,subscribersGained', 
  {dimensions: 'video','max-results': '200',sort: '-views'});
  Logger.log(analyticsResponse);
}

Вам нужно аутентифицировать Google AppScript с помощью OAuth. ИТ предоставит вам как онлайн, так и оффлайн доступ.

API Google используют протокол OAuth 2.0 для аутентификации и авторизации. Google поддерживает распространенные сценарии OAuth 2.0, например, для веб-сервера, установленных и клиентских приложений.

Вот несколько советов о том, как использовать OAuth с вашим скриптом приложений.

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