我正在使用google的node.js API https://www.npmjs.com/package/googleapis
我正在尝试获取属于该人的所有频道的数组 谁用他的谷歌帐户登录我的网站。 我在这个问题上使用这个范围: ''https://www.googleapis.com/auth/youtube.readonly“
现在这是我的代码的一部分:
app.get("/oauthcallback", function(req, res) {
//google redirected us back in here with random token
var code = req.query.code;
oauth2Client.getToken(code, function(err, tokens) { //let's check if the query code is valid.
if (err) { //invalid query code.
console.log(err);
res.send(err);
return;
}
//google now verified that the login was correct.
googleAccountVerified(tokens, res); //now decide what to do with it
});
});
function googleAccountVerified(tokens, res){ //successfully verified.
//user was verified by google, continue.
oauth2Client.setCredentials(tokens); //save tokens to an object
//now ask google for the user's details
//with the verified tokens you got.
youtube.channels.list({
forUsername: true,
part: "snippet",
auth: oauth2Client
}, function (err, response) {
if(err) {
res.send("Something went wrong, can't get your google info");
return;
}
console.log(response.items[0].snippet);
res.send("test");
});
}
现在,在这个console.log中:
console.log(response.items[0].snippet);
无论我使用什么帐户登录我的网站,我都会收到相同的信息:
{ title: 'True',
description: '',
publishedAt: '2005-10-14T10:09:11.000Z',
thumbnails:
{ default: { url: 'https://i.ytimg.com/i/G9p-zLTq1mO1KAwzN2h0YQ/1.jpg?v=51448e08' },
medium: { url: 'https://i.ytimg.com/i/G9p-zLTq1mO1KAwzN2h0YQ/mq1.jpg?v=51448e08' },
high: { url: 'https://i.ytimg.com/i/G9p-zLTq1mO1KAwzN2h0YQ/hq1.jpg?v=51448e08' } },
localized: { title: 'True', description: '' } }
如果我做console.log(响应)这是整个响应
我明白了:
{ kind: 'youtube#channelListResponse',
etag: '"m2yskBQFythfE4irbTIeOgYYfBU/ch97FwhvtkdYcbQGBeya1XtFqyQ"',
pageInfo: { totalResults: 1, resultsPerPage: 5 },
items:
[ { kind: 'youtube#channel',
etag: '"m2yskBQFythfE4irbTIeOgYYfBU/bBTQeJyetWCB7vBdSCu-7VLgZug"',
id: 'UCG9p-zLTq1mO1KAwzN2h0YQ',
snippet: [Object] } ] }
所以,这里有两个问题:
1)如何通过登录用户获取所拥有的频道数组, 在数组内部,我需要代表每个频道的对象和基本信息,如频道名称,个人资料图片。
2)为什么我会得到一些名为“True”的随机YouTube频道的信息
答案 0 :(得分:0)
不确定问题一,但对于问题二,您获得了名为true的频道的信息,因为您要求它。 forUsername: true
我希望一旦你纠正这个,如果用户名不止一个,那么回复可能包含多个频道。
答案 1 :(得分:0)
关注基本信息的问题。
您不使用Youtube API来获取帐户的个人资料信息。相反,请尝试Retrieve Profile Information with G+:
要检索用户的配置文件信息,请使用people.get API方法。要获取当前授权用户的配置文件信息,请使用我的userId值。
JavaScript示例:
// This sample assumes a client object has been created.
// To learn more about creating a client, check out the starter:
// https://developers.google.com/+/quickstart/javascript
gapi.client.load('plus','v1', function(){
var request = gapi.client.plus.people.get({
'userId': 'me'
});
request.execute(function(resp) {
console.log('Retrieved profile for:' + resp.displayName);
});
});
Google登录网站还支持Getting profile information:
使用默认范围登录Google用户后,您可以访问用户的Google ID,姓名,个人资料网址和电子邮件地址。
要检索用户的配置文件信息,请使用getBasicProfile()方法。例如:
if (auth2.isSignedIn.get()) {
var profile = auth2.currentUser.get().getBasicProfile();
console.log('ID: ' + profile.getId());
console.log('Full Name: ' + profile.getName());
console.log('Given Name: ' + profile.getGivenName());
console.log('Family Name: ' + profile.getFamilyName());
console.log('Image URL: ' + profile.getImageUrl());
console.log('Email: ' + profile.getEmail());
}