YouTube API-使用Google Admin帐户访问Mutiple YouTube频道(品牌帐户)



我需要使用YouTube分析和报告API从视频中提取信息。

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

使用"尝试"测试API,一旦切换到该频道所属的品牌帐户,我只能检索频道的数据,否则我会遇到403-禁止错误。

有什么方法可以使用我用来登录的Google帐户提取数据?因为一旦我在开发人员控制台中创建了凭据,它们将与Google帐户相关联,而不是与品牌帐户相关联。

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

我已经搜索 on behalfofcontentowner 要在请求中使用的字段,但是我不知道如何获得此ID,我不确定这是否适用于我的情况,由于我们谈论的是品牌帐户,请纠正我,如果我错了。事实证明,这是可能的,只是没有证件,其工作方式与您的期望有所不同:

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

我第一次尝试时也有同样的误解(甚至还发现了品牌帐户的client_id)。事实证明,您不想使用品牌的oauth信息 - 您想使用自己的client_id/client_secret代表品牌帐户创建刷新令牌,然后使用它来创建auth tokens。

步骤:

  1. 使用您的主帐户通过https://console.developers.google.com/apis/credentials
  2. 来创建OAuth Client_id和client_secret
  3. 编辑您刚刚添加的Client_id/client_secret条目,然后在页面底部添加" https://developers.google.com/oauthplayground"。
  4. 我们将以懒惰的方式创建一个刷新象征。访问https://developers.google.com/oautplayground/
  5. 单击右上角的齿轮,然后将访问类型设置为"离线",然后单击"使用您自己的OAuth凭据",然后输入您在步骤1中创建的client_id and Client_secret。
  6. 选择要访问它的范围。单击授权API。
  7. 这是魔术位:现在要求您"选择一个帐户"。选择您要在此处访问的品牌帐户,而不是您的主要帐户。由于您有权访问它,即使您使用自己的client_id and client_secret
  8. ,也可以正常工作。
  9. 允许您提示您的权限访问,然后将您带回OAuth Playground。
  10. 单击"代币的交换授权代码"
  11. 抓住刷新令牌并像普通一样使用它来根据需要生成auth令牌。

恭喜,您现在可以访问该品牌帐户!

希望有帮助。

YouTube API与其他Google API不同。使用其他API,您可以验证对完整帐户的访问。但是,使用YouTube API基于频道。您将需要在每个频道中对应用程序进行身份验证。

behalfofcontentowner

此参数旨在 YouTube内容合作伙伴 管理许多不同的YouTube频道。它允许内容所有者 验证一次,并访问其所有视频和频道数据, 不必为每个提供身份验证证书 单个渠道。实际 CMS帐户用户对用户进行身份验证 有需要链接到指定的YouTube内容所有者。

您需要成为YouTube合作伙伴,然后您可以联系您的客户经理并获得CMS ID。我还没有弄清楚必须归档哪种魔术才能成为YouTube合作伙伴。

我将对 @Paolo的不可思议的答案进行更新。就我而言,我试图使用Playlist.list API获取私人视频。我从未见过API记录的,Asinine和YouTube的API。

上下文:我有一个主要的Google帐户,我的YouTube API凭据与之相关(没有Google Developer帐户YouTube品牌帐户),但想为我的YouTube帐户获得私人播放列表(和视频)(一个品牌帐户)。mine=truekeychannelIdonBehalfOfContentOwneronBehalfOfContentOwnerChannel都对我无能为力。我正在获得具有这些参数的各种组合和值的公共播放列表或API错误。

最后,这些是我运行节点脚本以获取我的品牌帐户的私人视频的步骤:

  1. 转到https://console.developers.google.com/有关您的主要Google帐户。
  2. 在侧边栏中,转到Apis&服务,然后凭证
  3. 在顶部,单击 创建凭据,然后是服务帐户
  4. 在服务帐户详细信息下,输入任何名称,然后单击创建并继续
  5. 在"宏伟的"此服务帐户访问项目" grand';
  6. "授予用户访问此服务帐户",单击完成
  7. 在加载的主要凭据页面上,单击服务帐户下的新创建的服务帐户
  8. 在选项卡中,单击键
  9. 单击"添加键"按钮,然后创建新键
  10. 保持JSON,然后单击创建
  11. 将文件保存为client-key.json在nodejs project的根部
  12. 转到https://developers.google.com/oauthplayground
  13. 滚动到示波器的底部,然后选择YouTube数据API V3 V3,然后选择https://www.googleapis.com/auth/youtubehttps://www.googleapis.com/auth/youtube.readonly
  14. 在弹出的窗口中,单击您的YouTube(品牌)帐户,然后允许
  15. 在下一步中,单击令牌的交换授权代码
  16. 复制访问令牌
  17. 返回您的节点脚本并以此方式使用:
  const auth = new google.auth.GoogleAuth({
    keyFile: "client-key.json",
    scopes: [
      "https://www.googleapis.com/auth/youtube",
      "https://www.googleapis.com/auth/youtube.force-ssl",
      "https://www.googleapis.com/auth/youtube.readonly",
      "https://www.googleapis.com/auth/youtubepartner",
      "https://www.googleapis.com/auth/youtubepartner-channel-audit",
    ],
  })
  const authClient = await auth.getClient()
  google.options({ auth: authClient })
  const youtube = google.youtube("v3")
  const token = "your token here"
  const results = await youtube.playlists.list({
    part: [
      "snippet",
      "id",
      "contentDetails",
      "status",
      "localizations",
      "status",
    ],
    mine: true,
    auth: token,
    oauth_token: token,
    maxResults: 50,
  })

注意mine: true,并且代币必须传递给authoauth_token,而不是key。如果丢失了任何一个参数,则呼叫将失败。(为什么?没有线索。请告诉我。)另外,您必须在操场到期后在操场上不断更新您的访问令牌。

现在,所有这些都说,我鼓励您发现我的API比YouTube API差。我的猜测是,您很难找到像这样荒谬的一半。

P.S。我相信在此之前,还有其他需要的事情,例如启用YouTube API并在OAuth同意屏幕上做某事,但我对这件事太累了,无法继续。希望Google Console UX能够指导您完成这些步骤,尽管坦率地说,我怀疑。

希望这会有所帮助,好运,因为您实际上可能需要它。

如果您遵循解决方案永久刷新令牌并使用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>

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

  • 用oauth2
  • 以编程方式对Google进行认证
  • https://blog.timekit.io/google-oauth-invalid-grant-nightmare-nightmare-and-how-how-to-fix-ix-ix-inf4efaf1da35

最新更新