YouTube API - 使用Google管理员帐户访问多个YouTube频道(品牌帐户)

时间:2016-12-07 11:41:03

标签: youtube-api youtube-data-api youtube-analytics-api

我需要使用YouTube Analytics and Reporting Api从视频中提取信息。

当我使用Google帐户登录YouTube时,我可以访问多个YouTube品牌帐户。

使用“试用”来测试API,我只能在切换到此频道所属的品牌帐户后检索频道的数据,否则我会收到403 - 禁止错误。

有没有办法使用我用来登录的Google帐户提取数据?因为一旦我在开发者控制台中创建凭据,它们就会与Google帐户相关联,而不会与品牌帐户相关联。

我的Google帐户在品牌帐户上有经理角色

我搜索了要在请求中使用的 onBehalfOfContentOwner 字段,但我不知道如何获取此ID,我不确定这是否适用于我的情况,因为我们正在谈论品牌账户,如果我错了,请纠正我。

3 个答案:

答案 0 :(得分:9)

两天前,我与此斗争过。事实证明它是可能的,它只是没有记录,并且工作方式与你期望的有点不同:

  

在开发者控制台中创建凭据后,它们将与Google帐户相关联,而不是与品牌帐户相关联。

当我第一次尝试时,我有同样的错误观念(甚至到目前为止找到了品牌帐户的client_id)。事实证明,您不想使用品牌的oauth信息 - 您希望使用自己的client_id / client_secret代表品牌帐户创建刷新令牌,然后使用它创建身份验证令牌。

<强>步骤:

  1. 使用您的主帐户通过https://console.developers.google.com/apis/credentials
  2. 创建oauth client_id和client_secret
  3. 编辑刚刚添加的client_id / client_secret条目,并将“https://developers.google.com/oauthplayground”添加到页面底部的“授权重定向URI”。
  4. 我们将以懒惰的方式创建一个刷新令牌。转到https://developers.google.com/oauthplayground/
  5. 点击右上角的齿轮,将访问类型设置为“离线”,然后点击“使用您自己的OAuth凭据”,输入您在步骤1中创建的client_id和client_secret。
  6. 选择要授予其访问权限的范围。单击授权API。
  7. 这是神奇的一点:现在要求你“选择一个帐户”。选择您要在此处访问的品牌帐户,而不是您的主帐户。由于您有权访问它,即使您使用自己的client_id和client_secret
  8. 也可以正常工作
  9. 在提示您时允许权限访问,然后您将被带回oauth游乐场。
  10. 点击“兑换令牌的授权码”
  11. 抓取刷新令牌并像平常一样使用它来根据需要生成身份验证令牌。
  12. 恭喜,您现在可以访问该品牌帐户!

    希望有所帮助。

答案 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>

拥有刷新令牌后,这些资源也可能会有所帮助: