Мне нужно получить идентификатор канала пользователя после входа 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"
}
}
И я не знаю почему ...