使用频道 ID

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

一年多来,您可以将 Google+ 个人资料与 YouTube 频道相关联,我们曾在博客中介绍过,由于建立了个人资料关联,部分 Data API v2 响应发生了变化。最近,您可以创建不与传统 YouTube 用户名相关联的全新 YouTube 频道,而是仅通过 Google+ 个人资料进行标识。该博文中的大部分信息仍然适用,但这一额外变化确实会使一些关于 YouTube 频道的基本假设失效,例如每个频道都将始终与一个唯一的 YouTube 用户名相关联。因此,我们想跟进一些其他最佳实践,以编写适用于所有类型频道的代码。

Data API v3 中的渠道 ID

所有与频道相关的 v3 操作都将频道 ID 作为识别这些频道的唯一方式。特定 YouTube 用户频道的 ID 在 API 的 v2 版和 v3 版中是相同的,这简化了在不同版本之间进行迁移。对于之前习惯将 YouTube 用户名传递给 API 方法的开发者来说,这种完全依赖于频道 ID 的做法可能会令人困惑,但 v3 的设计目的是将具有旧版用户名的频道与不具有旧版用户名的频道视为等同,这意味着在所有地方都使用频道 ID。

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

如果您发现自己有任意旧版 YouTube 用户名,需要使用 v3 版 API 将其转换为频道 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 接受请求网址中接受 YouTube 用户名的所有位置的频道 ID,这意味着您可以将频道 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 执行此操作。