我们在Youtube中设置了几个内容所有者(我将其称为A,B,C,D)。所有这些都已经与Google帐户相关联(我称之为GA1)。我们有一个自定义应用程序,需要能够使用Youtube Data API v3检索内容所有者的视频和分析数据。 (API的v2将于4月20日开始执行。)
我遇到的问题是,显然没有办法做到这一点。使用服务帐户(以及Google的PHP库与Youtube API交谈),我最终拨打了这样的电话:
$optParams = array(
'forContentOwner' => true,
'onBehalfOfContentOwner' => '[A]',
'order' => 'date',
'maxResults' => 20,
'type' => 'video',
);
$serviceYT->search->listSearch('snippet', $optParams);
最终会抛出403 Forbidden异常。 (上面的" [A]"将替换为实际的内容所有者名称。)我可以成功完成许多其他呼叫,例如列出频道或视频,甚至其他类型的搜索,但是我添加了" forContentOwner"和" onBehalfOfContentOwner"参数,我得到403禁止(没有关于禁止它的原因的附加信息)。
在Youtube API文档(https://developers.google.com/youtube/v3/guides/authentication)中,我找到了这一行:
服务帐户流支持不访问用户信息的服务器到服务器交互。但是,YouTube Data API不支持此流程。由于无法将服务帐户与YouTube帐户相关联,因此尝试使用此流程授权请求会产生NoLinkedYouTubeAccount错误。
但是,当我使用我在开发者控制台中创建的服务帐户(对于链接到内容所有者的帐户GA1)授权(OAuth 2.0)时,它授权就好了,我从来没有看到任何&# 34; NoLinkedYouTubeAccount"错误。有谁知道我做错了什么?或者通过服务帐户访问内容所有者数据根本不可能?我应该使用另一个OAuth 2.0流程吗?需要调用API的代码通过cron作业触发;它根本不是互动的。