2

我们使用以下调用来获取经过身份验证的用户的 ChannelID,它适用于大多数情况。一些 YouTube 用户将他们的频道连接到 Google+ 页面,在这种情况下,我们的一位用户失败了。在这种情况下,该调用仅返回与用户用于身份验证的电子邮件帐户相关联的频道 ID,而不是用户拥有的所有频道。

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 来构造频道 URL。

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

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

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

2 回答 2

3

一些东西:

  1. 在 YouTube Data API v3 中,您不得不在任何地方使用频道 ID。这是一件好事。频道 ID 是识别频道的唯一通用方法!旧版用户名也用于此目的,但没有旧版用户名的频道数量每天都在增加,因此不建议编写依赖旧版用户名的新 v2 代码(在 v3 中也不可能)。
  2. 拨打channels.list(..., mine=true)电话时,您总是会返回一个频道。您返回的通道取决于您在完成 OAuth 2 流程时选择了哪个通道 - 如果您的 Google 帐户碰巧可以访问多个通道,则该流程中有一个选择器,可让您选择您想要的任何通道. 如果您想在不同的通道上进行操作,则需要为该通道显式获取 OAuth 2 令牌。
  3. channel.list(..., managedByMe=true)可以返回多个频道,但该 API 调用仅与 YouTube 内容合作伙伴相关,并与onBehalfOfContentOwner参数一起使用。大多数开发者可以放心地忽略这一点,除非您明确知道自己在使用 YouTube 内容合作伙伴的帐户。
  4. 访问频道页面的 URL 不会在 v3 API 响应中的任何地方返回——这是真的,也许应该是(请随意提交功能请求)。如果要手动构建 URL,可以使用http://www.youtube.com/channel/CHANNEL_ID,这里CHANNEL_ID是 v3 中其他地方使用的标准UC...值。无论频道是否还有旧用户名,这都应该产生一个有效的 URL。
于 2013-05-22T19:41:58.373 回答
0

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

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

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

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

于 2013-05-19T14:00:11.423 回答