YouTube API v3 - не удается получить правильный идентификатор канала - PullRequest
0 голосов
/ 25 января 2019

Мне нужно получить идентификатор канала пользователя после входа oAuth2 в веб-приложение, на этот раз я делал это так:

  var response = "";
  gapi.client.request({
    'method': 'GET',
    'path': 'https://www.googleapis.com/youtube/v3/channels',
    'params': {'part': 'snippet', 'mine': 'true', 'fields': fields},
    'scope': scope,
    'access_token': token
  }).execute(function(response) {
    if (response["items"][0]["id"] != null) {
      app.user.id = response["items"][0]["id"];
    } else {
      console.log("Error: " + response);
      // gapi error
    }
  });

Но когда я использую приведенный выше код и пользователь выходит из системы и снова входит в нее, используя другую учетную запись, он все равно возвращает идентификатор канала этой первой учетной записи, даже если токен доступа связан со второй учетной записью. Итак, я придумаю это:

  var http = new XMLHttpRequest(),
  url = "https://www.googleapis.com/youtube/v3/channels",
  params = "part=id&mine=true&access_token=" + token;
  http.open("GET", url, true);
  http.onreadystatechange = function() {
    if (http.readyState == 4 && http.status == 200) {
      if (http.responseText["items"][0]["id"] != null) {
        app.user.id = http.responseText["items"][0]["id"];
      } else {
        console.log("Error: " + http.responseText);
      }
    } else {
      console.log("Error: " + http.responseText);
    }
  }
  http.send(params);

Который всегда дает мне такой ответ:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Required parameter: part",
    "locationType": "parameter",
    "location": "part"
   }
  ],
  "code": 400,
  "message": "Required parameter: part"
 }
}

И я не знаю почему ...

...