如何从 youtube api 获取频道列表?
How to get the Channel's list from youtube api?
我想获取所有频道的列表及其来自 youtube 的统计信息 api。
我所做的是:
- 注册控制台应用程序
- 使用的 Oauth 客户端 ID
- https://developers.google.com/youtube/v3/docs/channels/list 使用这个 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);
});
}
但是,问题是这个return只有一个频道的信息。我的帐户下有 20 个频道。所以,我需要它们全部显示在我的 table.
中
我也尝试添加 forUsername:'Username' 参数但没有成功。
此外,当我尝试将 managedByMe:true 设置为 returning 错误时
Global:"required",
Message:"Required"
无法显示所有频道的列表。你能解释一下吗?
这就是我想要的
Channelname ViewsCount
1 50
2 51
等等……
忽略我的代码response.result.items[0]
我正在控制台检查整个响应。并且项目一次只包含一个频道。
编辑:
更新 1:
当您使用 managedByMe
标志(设置为 true
)时,您必须为该标志提供所需的参数 onBehalfOfContentOwner
,这是内容所有者标识符的字符串你必须知道的。
要获得正确的内容所有者 ID,您需要请求一个新的访问令牌,并且在登录时 select 与您要使用的内容所有者 ID 相对应的正确用户,事情应该工作正常。
调查 看来您需要做的是作为 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 以确认一切正常,然后实施反映这一点的代码,那里有更多描述性错误。
我想获取所有频道的列表及其来自 youtube 的统计信息 api。
我所做的是:
- 注册控制台应用程序
- 使用的 Oauth 客户端 ID
- https://developers.google.com/youtube/v3/docs/channels/list 使用这个 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);
});
}
但是,问题是这个return只有一个频道的信息。我的帐户下有 20 个频道。所以,我需要它们全部显示在我的 table.
中我也尝试添加 forUsername:'Username' 参数但没有成功。
此外,当我尝试将 managedByMe:true 设置为 returning 错误时
Global:"required",
Message:"Required"
无法显示所有频道的列表。你能解释一下吗?
这就是我想要的
Channelname ViewsCount
1 50
2 51
等等……
忽略我的代码response.result.items[0]
我正在控制台检查整个响应。并且项目一次只包含一个频道。
编辑:
更新 1:
当您使用 managedByMe
标志(设置为 true
)时,您必须为该标志提供所需的参数 onBehalfOfContentOwner
,这是内容所有者标识符的字符串你必须知道的。
要获得正确的内容所有者 ID,您需要请求一个新的访问令牌,并且在登录时 select 与您要使用的内容所有者 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 以确认一切正常,然后实施反映这一点的代码,那里有更多描述性错误。