我想从youtube api获取所有频道列表及其统计信息。
我所做的是:
这就是我为获取频道列表所做的工作
function requestUserUploadsPlaylistId() {
// See https://developers.google.com/youtube/v3/docs/channels/list
var request = gapi.client.youtube.channels.list({
mine: true,
part: 'statistics'
});
request.execute(function(response) {
playlistId = response.result.items[0].contentDetails.relatedPlaylists.uploads;
requestVideoPlaylist(playlistId);
});
}
但问题是这回归只有一个频道的信息。我的帐户下有20个频道。所以,我需要他们全部在我的桌子上显示它们。
我还尝试添加 forUsername:'用户名' 参数,但没有成功。
此外,当我尝试将 managedByMe:true 设置为
时返回错误Global:"required",
Message:"Required"
无法显示所有频道的列表。你能解释一下吗?
这就是我想要的
Channelname ViewsCount
1 50
2 51
依旧.....
忽略我的代码response.result.items[0]
我正在检查控制台中的整个响应。和项目一次只包含一个频道。
答案 0 :(得分:1)
更新1:
当您使用managedByMe
标志(设置为true
)时,您必须为该标志提供所需的参数onBehalfOfContentOwner
,该标志是您的内容所有者标识符的字符串必须知道。
要获取正确的内容所有者ID,您需要请求新的访问令牌,并且在登录时选择与您要使用的内容所有者ID相对应的适当用户,并且事情应该正常。
调查this question您似乎需要做的是以CMS用户帐户身份登录,然后您将该用户ID用作内容所有者ID,事后应该根据需要使用
初步回答:
您只访问代码中的items[0]
,它只显示一个元素,尝试更改代码以使用foreach
循环并迭代所有通道,如下所示:
function requestUserUploadsPlaylistId() {
// See https://developers.google.com/youtube/v3/docs/channels/list
var request = gapi.client.youtube.channels.list({
mine: true,
part: 'statistics'
});
request.execute(function(response) {
response.result.items.forEach(function(anItem) {
playlistId = anItem.contentDetails.relatedPlaylists.uploads;
requestVideoPlaylist(playlistId);
});
});
}
关于其他错误,您无法同时使用managedByMe
和mine
,如果您想要managedByMe
用户,则需要清除mine
并拥有适当的权限,我建议先使用api explorer来确认一切正常,然后实施反映该代码的代码,它会有更多描述性错误。