如何从 youtube api 获取频道列表?

How to get the Channel's list from youtube api?

我想获取所有频道的列表及其来自 youtube 的统计信息 api。

我所做的是:

  1. 注册控制台应用程序
  2. 使用的 Oauth 客户端 ID
  3. 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);
     });
  });
}

关于另一个错误,你不能同时使用managedByMemine,如果你想使用managedByMe你需要清除掉mine和有适当的权限,我建议先玩 api explorer 以确认一切正常,然后实施反映这一点的代码,那里有更多描述性错误。