我需要使用YouTube分析和报告API从视频中提取信息。
当我使用我的Google帐户登录YouTube时,我可以访问多个YouTube品牌帐户。
使用"尝试"测试API,一旦切换到该频道所属的品牌帐户,我只能检索频道的数据,否则我会遇到403-禁止错误。
有什么方法可以使用我用来登录的Google帐户提取数据?因为一旦我在开发人员控制台中创建了凭据,它们将与Google帐户相关联,而不是与品牌帐户相关联。
我的Google帐户在品牌帐户上具有经理角色。
我已经搜索 on behalfofcontentowner 要在请求中使用的字段,但是我不知道如何获得此ID,我不确定这是否适用于我的情况,由于我们谈论的是品牌帐户,请纠正我,如果我错了。事实证明,这是可能的,只是没有证件,其工作方式与您的期望有所不同:
一旦我在开发人员控制台中创建凭据,它们将与Google帐户相关联,而不是与品牌帐户相关联。
我第一次尝试时也有同样的误解(甚至还发现了品牌帐户的client_id)。事实证明,您不想使用品牌的oauth信息 - 您想使用自己的client_id/client_secret代表品牌帐户创建刷新令牌,然后使用它来创建auth tokens。
步骤:
- 使用您的主帐户通过https://console.developers.google.com/apis/credentials 来创建OAuth Client_id和client_secret
- 编辑您刚刚添加的Client_id/client_secret条目,然后在页面底部添加" https://developers.google.com/oauthplayground"。
- 我们将以懒惰的方式创建一个刷新象征。访问https://developers.google.com/oautplayground/
- 单击右上角的齿轮,然后将访问类型设置为"离线",然后单击"使用您自己的OAuth凭据",然后输入您在步骤1中创建的client_id and Client_secret。
- 选择要访问它的范围。单击授权API。
- 这是魔术位:现在要求您"选择一个帐户"。选择您要在此处访问的品牌帐户,而不是您的主要帐户。由于您有权访问它,即使您使用自己的client_id and client_secret ,也可以正常工作。
- 允许您提示您的权限访问,然后将您带回OAuth Playground。
- 单击"代币的交换授权代码"
- 抓住刷新令牌并像普通一样使用它来根据需要生成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=true
,key
,channelId
,onBehalfOfContentOwner
和onBehalfOfContentOwnerChannel
都对我无能为力。我正在获得具有这些参数的各种组合和值的公共播放列表或API错误。
最后,这些是我运行节点脚本以获取我的品牌帐户的私人视频的步骤:
- 转到https://console.developers.google.com/有关您的主要Google帐户。
- 在侧边栏中,转到Apis&服务,然后凭证
- 在顶部,单击 创建凭据,然后是服务帐户
- 在服务帐户详细信息下,输入任何名称,然后单击创建并继续
- 在"宏伟的"此服务帐户访问项目" grand';
- "授予用户访问此服务帐户",单击完成
- 在加载的主要凭据页面上,单击服务帐户下的新创建的服务帐户
- 在选项卡中,单击键
- 单击"添加键"按钮,然后创建新键
- 保持JSON,然后单击创建
- 将文件保存为client-key.json在nodejs project的根部
- 转到https://developers.google.com/oauthplayground
- 滚动到示波器的底部,然后选择YouTube数据API V3 V3,然后选择
https://www.googleapis.com/auth/youtube
和https://www.googleapis.com/auth/youtube.readonly
。 - 在弹出的窗口中,单击您的YouTube(品牌)帐户,然后允许
- 在下一步中,单击令牌的交换授权代码
- 复制访问令牌
- 返回您的节点脚本并以此方式使用:
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
,并且代币必须传递给auth
和oauth_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