使用带有 onBehalfOfContentOwner 的 Youtube API 的 CMS 频道列表

leo*_*yin 4 python youtube-api youtube-data-api

我正在使用 Youtube Data API 对MCN 中的几个 CMS 帐户进行有针对性的查询(如本例)。我启用了正确的 API 并在 Google 的开发人员控制台上为已安装的应用程序设置了 oAuth。我确保调用正确的范围:

YOUTUBE_SCOPES = ["https://www.googleapis.com/auth/youtube.readonly",
                  "https://www.googleapis.com/auth/yt-analytics-monetary.readonly",
                  "https://www.googleapis.com/auth/youtubepartner"]
Run Code Online (Sandbox Code Playgroud)

身份验证没有任何疑虑...

(youtube, youtube_analytics) = get_authenticated_services(args)
Run Code Online (Sandbox Code Playgroud)

直到进行健全性检查以列出与 CMS 关联的频道:

youtube.channels().list(
    part='snippet,contentDetails', 
    managedByMe=True, 
    maxResults=50, 
    onBehalfOfContentOwner=CONTENT_OWNER_ID
  ).execute()
Run Code Online (Sandbox Code Playgroud)

返回 403“禁止访问”错误。我想知道这是不是因为我的 CMS 帐户没有管理员权限?

Dan*_*iel 5

两件事之一可能在这里起作用:

  1. 您正在使用授予对 CMS 访问权限的帐户进行身份验证,但CONTENT_OWNER_ID您在youtube.channels().list()方法中提供的信息不正确。
  2. 您提供了正确的CONTENT_OWNER_ID,但使用错误的帐户进行身份验证。

情况1

您可能只需要在您的方法中包含正确CONTENT_OWNER_IDonBehalfOfContentOwner参数youtube.channels().list()(尽管为了隐私,您可能在帖子中将此留空)。

要仔细检查,您可以CONTENT_OWNER_ID通过此表单调用 API 来找到 的值。确保您的身份验证正确(即,使用可以访问您想要的 CMS 的帐户),您将收到一个 JSON 响应,如下所示:

{
 "kind": "youtubePartner#contentOwnerList",
 "items": [
  {
   "kind": "youtubePartner#contentOwner",
   "id": CONTENT_OWNER_ID,
   "displayName": DISPLAY_NAME
   etc.
  }
 ]
}
Run Code Online (Sandbox Code Playgroud)

只需CONTENT_OWNER_ID在您的channels().list()方法中包含您想要的来自此响应的任何内容(再次确保您已正确验证),瞧。

案例二

如果这不能解决您的问题,那么您可能提供了正确的 CONTENT_OWNER_ID,但是您正在使用错误的帐户进行身份验证。

在再次运行脚本之前,请仔细检查是否删除了包含临时访问令牌的文件(它的文件名类似于“YOUR_FILENAME-oauth2.json”)。然后,再次运行你的脚本;确保在提示选择身份验证帐户时,选择与CONTENT_OWNER_ID您设置的帐户相对应的帐户。

tl:博士;

基本上,您进行身份验证的帐户与CONTENT_OWNER_ID您提供的帐户之间必须达成一致。

最后,您不需要API 密钥来以这种方式调用 API;您需要一个 API 密钥一个经过适当身份验证的 OAuth 2.0 访问令牌。这是文档

  • 谁能告诉我如何获取 **CONNTEN_OWNER_ID** (4认同)