我们使用以下调用来获取经过身份验证的用户的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/
答案 0 :(得分:3)
一些事情:
channels.list(..., mine=true)
通话时,您总是会回到一个频道。您获得的频道将取决于您在完成OAuth 2流程时选择的频道 - 该流程中有一个选择器,可让您选择在您的Google帐户可以访问多个频道时您想要的任何频道。如果您想在不同的频道上操作,则需要明确获取该频道的OAuth 2令牌。channel.list(..., managedByMe=true)
可以返回多个频道,但该API通话仅与YouTube内容合作伙伴相关,并与onBehalfOfContentOwner
参数一起使用。大多数开发人员可以放心地忽略这一点,除非您知道自己明确使用YouTube内容合作伙伴的帐户。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。