我需要使用YouTube Analytics and Reporting Api从视频中提取信息。
当我使用Google帐户登录YouTube时,我可以访问多个YouTube品牌帐户。
使用“试用”来测试API,我只能在切换到此频道所属的品牌帐户后检索频道的数据,否则我会收到403 - 禁止错误。
有没有办法使用我用来登录的Google帐户提取数据?因为一旦我在开发者控制台中创建凭据,它们就会与Google帐户相关联,而不会与品牌帐户相关联。
我的Google帐户在品牌帐户上有经理角色。
我搜索了要在请求中使用的 onBehalfOfContentOwner 字段,但我不知道如何获取此ID,我不确定这是否适用于我的情况,因为我们正在谈论品牌账户,如果我错了,请纠正我。
答案 0 :(得分:9)
两天前,我与此斗争过。事实证明它是可能的,它只是没有记录,并且工作方式与你期望的有点不同:
在开发者控制台中创建凭据后,它们将与Google帐户相关联,而不是与品牌帐户相关联。
当我第一次尝试时,我有同样的错误观念(甚至到目前为止找到了品牌帐户的client_id)。事实证明,您不想使用品牌的oauth信息 - 您希望使用自己的client_id / client_secret代表品牌帐户创建刷新令牌,然后使用它创建身份验证令牌。
<强>步骤:强>
恭喜,您现在可以访问该品牌帐户!
希望有所帮助。
答案 1 :(得分:3)
YouTube API与其他Google API不同。使用其他API,您可以验证对完整帐户的访问权限。但是,YouTube API以其频道为基础。您需要为每个频道验证一次应用程序。
onBehalfOfContentOwner
此参数适用于拥有和的 YouTube内容合作伙伴 管理许多不同的YouTube频道。它允许内容所有者 进行一次身份验证并访问其所有视频和频道数据, 无需为每个提供身份验证凭据 个人频道。用户进行身份验证的实际 CMS帐户 需要与指定的YouTube内容所有者相关联。
您需要成为YouTube合作伙伴,然后才能与您的客户经理联系并获取CMS ID。我还没弄清楚要成为YouTube合作伙伴必须存档的魔术。
答案 2 :(得分:0)
如果您遵循获取永久刷新令牌的解决方案并使用Java,那么这对我有效
GoogleCredential credential = new GoogleCredential.Builder().setTransport(httpTransport)
.setJsonFactory(JSON_FACTORY)
.setClientSecrets(oauth2ClientId, oauth2ClientSecret)
.build()
.setRefreshToken(oauth2RefreshToken);
this.youTubeClient = new YouTube.Builder(httpTransport, JSON_FACTORY, credential)
.setApplicationName(APPLICATION_NAME)
.build();
必需的依赖项
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-youtube</artifactId>
<version>v3-rev212-1.25.0</version>
</dependency>
<dependency>
<groupId>com.google.auth</groupId>
<artifactId>google-auth-library-oauth2-http</artifactId>
<version>0.18.0</version>
</dependency>
拥有刷新令牌后,这些资源也可能会有所帮助: