#javascript #google-api #youtube-api #google-api-js-client #youtube-analytics-api
#javascript #google-api #youtube-api #google-api-js-client #youtube-analytics-api
Вопрос:
Я использовал API Youtube Analytics v2 для извлечения информации с каналов YouTube, у меня это работало, когда я использовал его для получения отчета с канала от пользователя, прошедшего проверку подлинности через OAuth2.0, для чего я использовал пример кода на их веб-сайте, теперь все, что мне нужно, это получать эти отчеты, не регистрируясь как владелец канала, который уже предоставил необходимые разрешения API, как я могу это сделать?
Я видел, что для этого мне требовался apiKey, я попробовал код gapi.client.setApiKey («API_KEY») в каждом месте кода, но я не получил никаких результатов, возможно, я что-то еще упускаю, я выбрал пример кода с веб-сайта youtube analytics и изменил параметр «ids» с «канал == МОЙ» на «канал == PREVIOUSLY_AUTHORIZED_CHANNEL_ID» и теперь я получаю ошибку 403 (запрещено), когда пытаюсь получить к ней доступ, не находясь в соответствующей учетной записи Google.
<script src="https://apis.google.com/js/api.js"></script>
<script>
function authenticate() {
gapi.client.setApiKey("<API_KEY>");
return gapi.auth2.getAuthInstance()
.signIn({scope: "https://www.googleapis.com/auth/yt-analytics.readonly"})
.then(function() { console.log("Sign-in successful"); },
function(err) { console.error("Error signing in", err); });
}
function loadClient() {
return gapi.client.load("https://youtubeanalytics.googleapis.com/$discovery/rest?version=v2")
.then(function() { console.log("GAPI client loaded for API"); },
function(err) { console.error("Error loading GAPI client for API", err); });
}
// Make sure the client is loaded and sign-in is complete before calling this method.
function execute() {
return gapi.client.youtubeAnalytics.reports.query({
"ids": "channel==<PREVIOUSLY_AUTHORIZED_CHANNEL_ID>",
"startDate": "2017-01-01",
"endDate": "2017-12-31",
"metrics": "views,estimatedMinutesWatched,averageViewDuration,averageViewPercentage,subscribersGained",
"dimensions": "day",
"sort": "day"
})
.then(function(response) {
// Handle the results here (response.result has the parsed body).
console.log("Response", response);
},
function(err) { console.error("Execute error", err); });
}
gapi.load("client:auth2", function() {
gapi.auth2.init({client_id: '17857976174-df6g4g2kajnh8mpoebk0o10n4o7ddvb8.apps.googleusercontent.com'});
});
</script>
<button onclick="authenticate().then(loadClient)">authorize and load</button>
<button onclick="execute()">execute</button>
Ответ №1:
теперь все, что мне нужно, это получать эти отчеты, не проходя проверку подлинности как владельца канала, как я могу это сделать?
Вы не можете. Данные YouTube analytics — это личные данные пользователя. Для доступа к личным данным требуется согласие пользователя. Единственный способ получить к ним доступ — с согласия пользователей.
Ключи API используются для доступа к общедоступным данным. Например, поиск YouTube для общедоступных видеороликов YouTube. Некоторые общедоступные календари Google и файлы Google Drive.
Комментарии:
1. У меня уже есть согласие пользователя, он аутентифицировался в API и разрешил доступ к своим отчетам, я просто хочу получать отчеты, не входя в его учетную запись.
2. Вы не можете, у вас всегда должен быть доступ от пользователя. Имеющийся у вас токен доступа действителен только в течение одного часа, после чего вам придется получить новый, попросив их войти в систему. Если вы используете язык на стороне сервиса, вы могли бы запросить автономный доступ и получить токен обновления, но javascript не поддерживает автономный доступ.
3. Спасибо за ответы, теперь я знаю, что javascript — это не тот способ делать то, что я хочу, я бы потратил много времени, пытаясь разобраться в этом самостоятельно.
4. не забудьте принять ответ, если это помогло вам .. Совет № 2 не заходите в учетные записи служб, этот api также поддерживает это.