如何获取经过身份验证的用户拥有的YouTube频道列表以及相关的频道网址(用户或频道)

时间:2013-05-18 03:56:37

标签: youtube-api youtube-channels youtube.net-api

我们使用以下调用来获取经过身份验证的用户的ChannelID,并且适用于大多数情况。有些YouTube用户会将自己的频道与Google+信息页相关联,但在这种情况下,我们的某位用户就会失败。在这种情况下,呼叫仅返回与用于身份验证的用户电子邮件帐户关联的channelID,而不是用户拥有的所有频道。

System.IO.Stream resultStream = service.Query(new Uri("https://www.googleapis.com/youtube/v3/channels?part=id%2Csnippet%2CcontentDetails%2Cstatistics%2CtopicDetails&mine=true&key=" + GlobalSettings.developerKey));

此外,我们通过将channelID附加到以下网址来构建频道URL。

http://www.youtube.com/channel/

但是,有些人使用用户名和路径而不是channelID。如何检测类型 user 而不是 channel ?在这种情况下,用户名将附加到以下路径。 Google+用户的主频道使用此路径和用户名。

http://www.youtube.com/user/

2 个答案:

答案 0 :(得分:3)

一些事情:

  1. 在YouTube Data API的第3版中,您无需在任何地方使用频道ID。这是一件好事。频道ID是识别频道的唯一通用方式!传统用户名也用于此目的,但没有旧用户名的频道数量日增加,因此不建议编写依赖于旧用户名的新v2代码(在v3中无法实现)。
  2. 进行channels.list(..., mine=true)通话时,您总是会回到一个频道。您获得的频道将取决于您在完成OAuth 2流程时选择的频道 - 该流程中有一个选择器,可让您选择在您的Google帐户可以访问多个频道时您想要的任何频道。如果您想在不同的频道上操作,则需要明确获取该频道的OAuth 2令牌。
  3. channel.list(..., managedByMe=true)可以返回多个频道,但该API通话仅与YouTube内容合作伙伴相关,并与onBehalfOfContentOwner参数一起使用。大多数开发人员可以放心地忽略这一点,除非您知道自己明确使用YouTube内容合作伙伴的帐户。
  4. 访问频道页面的网址不会在v3 API响应中的任何位置返回 - 这是真的,也许应该是(file a feature request随意)。如果您想手动构建网址,可以使用http://www.youtube.com/channel/CHANNEL_ID,其中CHANNEL_ID是v3中其他地方使用的标准UC...值。这应该产生有效的URL,无论是否还有该频道的遗留用户名。

答案 1 :(得分:0)

我能够做到这一点的唯一方法是使用v2 API而不是v3。具体来说,您可以使用相同的OAuth令牌,但访问此API端点:

https://gdata.youtube.com/feeds/api/users/default?v=2

它将返回一个XML文档,其中包含用户频道的网址(使用频道ID)以及YouTube用户名。

有关详细信息,请参阅https://developers.google.com/youtube/2.0/reference#User_profile_entry