Apps Script продолжает запрашивать офлайн разрешение с помощью API Youtube
Я пишу отдельный скрипт Google Apps, который будет запрашивать API отчетов YouTube и возвращать аналитику в мои видео.
Когда я аутентифицируюсь в Apps Script на одной из страниц Google+, которые мы используем для управления нашими различными каналами Youtube, Apps Script продолжает просить меня авторизовать скрипт для автономного доступа.
Когда я пытаюсь сделать то же самое в новом проекте сценария с моей личной учетной записью Gmail, все работает нормально. Хотя есть проблема с этим. Когда я запрашиваю Youtube.Channels.list через свою учетную запись, я не получаю список других принадлежащих мне каналов, а только свой личный канал.
Я также попробовал это с помощью функции try it в документации Youtube со страницей Google+, и все работает отлично.
Для этого сценария в консоли разработчика Google включены и включены следующие расширенные службы:
- API данных Youtube
- API YouTube Analytics
- 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 с вашим скриптом приложений.