我想从 youtube api 获取所有 channel 的列表及其统计信息。
我所做的是:
- 已注册控制台应用
- 使用的 Oauth 客户端 ID
- https://developers.google.com/youtube/v3/docs/channels/list使用这个 API 我可以获得所有统计数据
这就是我获取 channel 列表的方法
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);
});
}
但是,问题是这个返回的只是一个 channel 的信息。我的帐户下有 20 个 channel 。因此,我需要将它们全部显示在我的表格中。
我也尝试添加 forUsername:'Username' 参数但没有成功。
此外,当我尝试设置 managementByMe:true 时,其返回错误为
Global:"required",
Message:"Required"
无法以任何方式显示所有 channel 的列表。你能解释一下吗?
这就是我想要的
Channelname ViewsCount
1 50
2 51
等等......
忽略我的代码response.result.items[0]
我正在控制台中检查整个响应。并且项目一次仅包含一个 channel 。
最佳答案
更新1:
当您使用 managementByMe
标志(设置为 true
)时,您必须为该标志提供必需的参数 onBehalfOfContentOwner
,即您必须知道的内容所有者标识符的字符串。
要获取正确的内容所有者 ID,您需要请求新的访问 token ,并在登录时选择与您要使用的内容所有者 ID 相对应的正确用户,一切都会正常工作。
调查this question看来您需要做的是作为 CMS 用户帐户登录,然后您将使用该用户 ID 作为内容所有者 ID,之后事情应该根据您的需要进行
<小时/>初始答案:
您仅在代码中访问 items[0]
,该代码仅显示一个元素,请尝试更改代码以使用 foreach
循环并迭代所有 channel 像这样:
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);
});
});
}
关于另一个错误,你不能同时使用managementByMe
和mine
,如果你想使用managementByMe
你需要清除出我的
并拥有适当的权限,我建议使用 api explorer首先确认一切正常,然后实现反射(reflect)这一点的代码,那里有更多描述性错误。
关于javascript - 如何从 youtube api 获取 channel 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38561562/