Как получить данные из авторизованного канала с помощью YouTube Analytics API, не входя в Google как владелец канала? - PullRequest
1 голос
/ 09 апреля 2019

Я использую Youtube Analytics API v2 для извлечения информации из каналов YouTube, у меня работает, когда я использую его для получения отчета от канала от пользователя, в настоящее время аутентифицированного через OAuth2.0, который я использовал в качестве примеракод на их веб-сайте, чтобы сделать это, теперь все, что мне нужно, это получать эти отчеты, не входя в систему как владелец канала, который уже дал необходимые разрешения для API, как я могу это сделать?

IЯ видел, что для этого мне нужен apiKey, я пробовал код gapi.client.setApiKey ("API_KEY") в каждом месте кода, но я не получил никаких результатов, возможно, я что-то упустилЯ выбрал пример кода с веб-сайта аналитики YouTube и изменил параметр «ids» с «channel == MINE» на «channel == 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 Ответ

1 голос
/ 09 апреля 2019

Теперь все, что мне нужно, это получать эти отчеты без проверки подлинности как владельца канала, как я могу это сделать?

Ты не можешь. Данные аналитики YouTube являются частными данными пользователя. Для доступа к личным данным требуется согласие пользователей. Единственный способ получить доступ - это с согласия пользователя.

Ключи API используются для доступа к публичным данным. Как YouTube поиск общедоступных видео на YouTube. Некоторые публичные календари Google и общедоступные файлы Google Drive.

...