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

时间:2016-01-27 23:59:06

标签: python youtube-api youtube-data-api

我正在使用Youtube Data API为MCN中的一些CMS帐户执行目标查询(like this example)。我启用了正确的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"]

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

(youtube, youtube_analytics) = get_authenticated_services(args)

在进行健全性检查之前,列出与CMS关联的频道:

youtube.channels().list(
    part='snippet,contentDetails', 
    managedByMe=True, 
    maxResults=50, 
    onBehalfOfContentOwner=CONTENT_OWNER_ID
  ).execute()

返回403“Access Forbidden”错误。我想知道这是因为我的CMS帐户没有管理员权限吗?

1 个答案:

答案 0 :(得分:2)

这里可能有两件事情之一:

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

    您可能只需要在CONTENT_OWNER_ID方法中为onBehalfOfContentOwner参数添加正确的youtube.channels().list()(尽管如此,您可能会在帖子中留下这一空白以保护隐私)。

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

    {
     "kind": "youtubePartner#contentOwnerList",
     "items": [
      {
       "kind": "youtubePartner#contentOwner",
       "id": CONTENT_OWNER_ID,
       "displayName": DISPLAY_NAME
       etc.
      }
     ]
    }
    

    只需在CONTENT_OWNER_ID方法中包含您希望从此响应中获得的任何channels().list()(再次确保您已经过适当的身份验证),并且瞧。

    <案例2

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

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

    TL:博士;

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

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