我正在创建一个应用程序,该应用程序将部署在各个网站上,并定期将每个网站的视频上传到YouTube。我已经上传了视频,但理想情况下每个网站都有自己的频道。
我搜索了一下是否有人遇到过这个问题(不要重新发明轮子,对吧?),但我唯一发现的是几个线程引用了这里api中详细描述的onBehalfOfContentOwner参数。
这与我无关,因为我不是内容合作伙伴;至少我不认为我是。谷歌API的帮助文件然后发送给我这里,所以我在这里。
我创建了一个YouTube品牌账号,目前有两个频道。显然,每一个都有自己的通道id。到目前为止,我已经尝试了以下操作:
-
在创建视频片段时指定ChannelId,我看不到其他地方可以设置它或使用合适的对象。我使用相同的OAuth凭据尝试使用两个不同的通道ID。
-
使用两个唯一的OAuth凭据创建两个独立的api项目,然后在运行时加载这些凭据。在应用程序的整个生命周期中,我只使用一组凭据,然后在测试上传仍然有效后,我更改为第二组凭据。我使用的第一个凭据集提示我登录并随后选择一个帐户。第二盘没有提示我除了视频外,其他所有视频都是在我的同一个帐户上上传的之前选择的。我被注销了YouTube,我的浏览器在这两种情况下均已关闭;浏览器关闭后不会存储任何详细信息。
我想我真正的问题是这个。指定要上传到哪个频道的最佳做法是什么?我使用的应用程序将在设定的时间自动运行,因此在上传过程中我无法与用户进行交互。(不过,在初始设置期间选择一个帐户是可以的!)
非常感谢您的帮助。提前谢谢。
编辑:
我发现,如果C:\Users{USERNAME}\AppData\Roaming\Google中存在访问令牌,API会自动在本地计算机上使用该令牌。Apis。Auth;即使我在应用程序中使用不同的OAuth凭据。删除访问令牌文件将导致下次从该机器使用api时出现登录提示。
对于我的应用程序,这是可以接受的,因为当我部署时,只需要一次性登录并获得访问令牌,然后每小时刷新一次。这也意味着我可以为我们的每个网站选择上传到哪个帐户/频道。虽然我承认MαπμQμαπkγVπ.0给出的答案,但鉴于我不是前面提到的内容合作伙伴,我认为这不适用。
如果有人能告诉我如何通过代码而不是删除访问令牌来做到这一点,那当然是一个首选的解决方案。(或者让我知道我是内容合作伙伴,这样我就可以尝试onBehalf参数)
我发现在我的应用程序运行的PC上删除OAuth令牌可以让我重新选择上传到的帐户/频道。
授权频道似乎是使用此令牌确定的,一旦出现,它将每小时自动刷新一次。鉴于一台电脑只能上传到给定网站的一个频道,我认为我必须为每个网站进行一次设置才能获得代币是可以接受的。
当你想指定你需要上传视频的频道时,我认为你可能需要在代码中使用这个参数:
onBehalfOfContentOwnerChannel
-此参数只能在适当授权的请求。此参数只能在适当授权的请求注意:此参数旨在专为YouTube内容合作伙伴设计。onBehalfContentOwnerChannel参数指定YouTube正在添加视频的频道的频道ID。这当请求为onBehalfContentOwner参数,并且它只能与该参数一起使用。此外,请求必须使用链接到内容所有者的CMS帐户进行授权onBehalfContentOwner参数指定的。最后onBehalfContentOwnerChannel参数值指定必须链接到onBehalfContentOwner参数指定。
此参数适用于拥有和管理许多不同的YouTube频道。它允许内容所有者身份验证一次并代表通道执行操作在参数值中指定,而无需提供每个独立通道的身份验证凭据。