我们使用下面的调用为经过身份验证的用户获取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来构造通道URL。
http://www.youtube.com/channel/
但是,有些人给我们提供用户名和路径,而不是channelID。如何检测类型是用户而不是通道?在这种情况下,用户名将附加到以下路径。Google+用户的主通道使用这个用户名的路径。
http://www.youtube.com/user/
发布于 2013-05-22 19:41:58
有几件事:
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,而不管该通道是否也有遗留用户名。发布于 2013-05-19 14:00:11
我能够做到这一点的唯一方法是使用v2 API,而不是v3。具体来说,您可以使用相同的OAuth令牌,但是可以访问这个API端点:
https://gdata.youtube.com/feeds/api/users/default?v=2
它将返回一个XML,它既包含到用户通道的URL (使用通道id),也包含YouTube用户名。
有关更多信息,请参见条目。
https://stackoverflow.com/questions/16620521
复制相似问题