使用频道 ID

Jeff Posnick,YouTube 开发者关系团队 - 2013 年 6 月

一年多以后,您可以将 Google+ 个人资料与 YouTube 频道相关联,并且我们发布了博客,其中介绍了一些 Data API v2 响应是如何因该个人资料关联而发生变化的。近期可能会创建没有传统 YouTube 用户名且改为仅通过 Google+ 个人资料标识的新 YouTube 频道。该博文中的大部分信息仍然适用,但这个额外的问题会导致一些 YouTube 频道的基本假设失效(比如,每个频道都会与一个唯一的 YouTube 用户名相关联)。我们希望采取一些额外的最佳做法,编写适用于各种频道的代码。

Data API v3 中的渠道 ID

与渠道合作的所有 v3 操作都仅将渠道 ID 作为识别渠道的方式。在 API v2 和 v3 中,特定 YouTube 用户的频道的 ID 是相同的,这简化了两个版本的迁移。对于以前习惯将 YouTube 用户名传递给 API 方法的开发者而言,这种完全依赖频道 ID 的现象可能会让人感到不快,但 v3 的设计宗旨是让频道有无传统用户名,也就是说,到处如何使用频道 ID。

如果您使用的是 v3 并希望检索与当前授权用户对应的渠道 ID,则可以调用 channels.list(part="id", mine=true) 方法。这相当于在 v2 中请求 default 用户的频道个人资料。

如果您确实需要使用任意旧版 YouTube 用户名来使用 API v3 将您的频道 ID 转换为频道 ID,则可以对该 API 进行 channels.list(part="id", forUsername="username") 调用。

如果您仅知道显示名称并希望查找相应的频道,search.list(part="snippet", type="channel", q="display name") 方法会派上用场。由于显示名称不具有唯一性,因此您应该准备好应对调用在响应中返回多个项的可能性。

Data API v2 中的渠道 ID

注意:YouTube Data API (v2) 自 2014 年 2 月 26 日起已弃用,该 API 已被关停。仍在使用 v2 API 的应用应立即迁移到 v3 API。

使用旧版 Data API v2 的开发者需注意的一点是,并非每个 YouTube 频道都有唯一的用户名。幸运的是,每个 YouTube 频道都保证具备与其关联的唯一频道 ID,该 ID 由 <yt:channelId> 标记中的值表示,我们建议开发者使用该值,而不是用户名。例如,如果您有一个用于将 YouTube 用户名映射到该频道相关信息的数据库,您的旧条目应该可以继续正常使用。(现有频道不会丢失其用户名)。但随着时间的推移,越来越多地需要使用不能由用户名标识的频道。

以下几个因素简化了从用户名到频道 ID 的转换。首先,Data API v2 接受请求网址中的频道 ID,但不接受 YouTube 用户名,这意味着您可以将频道 ID 无缝切换到现有的代码中。例如,由于 UC_x5XG1OV2P6uZZ5FSM9Ttw 是频道(使用旧用户名 GoogleDevelopers)的频道 ID,因此以下两个网址是等效的 API 请求:

https://gdata.youtube.com/feeds/api/users/GoogleDevelopers?v=2.1
https://gdata.youtube.com/feeds/api/users/UC_x5XG1OV2P6uZZ5FSM9Ttw?v=2.1

还需要注意的一点是,每当发出经过身份验证的 v2 请求时,就无需在构建请求网址时添加授权渠道的用户名。您始终可以使用值 default 代替用户名(或渠道 ID)。例如,如果您要检索当前授权用户的“视频上传”Feed,可以在 https://gdata.youtube.com/feeds/api/users/default/uploads?v=2.1 上进行。