我正在使用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帐户没有管理员权限吗?
答案 0 :(得分:2)
这里可能有两件事情之一:
CONTENT_OWNER_ID
方法中提供的youtube.channels().list()
不正确。CONTENT_OWNER_ID
,但使用了错误的帐户进行身份验证。您可能只需要在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()
(再次确保您已经过适当的身份验证),并且瞧。
如果这不能解决您的问题,那么您可能会提供正确的CONTENT_OWNER_ID
,但您使用错误的帐户进行身份验证。
再次运行脚本之前,请仔细检查是否删除了
包含临时访问令牌的文件(它的文件名如" YOUR_FILENAME-oauth2.json")。然后,再次运行您的脚本;确保在提示选择帐户进行身份验证时,选择
与您设置的CONTENT_OWNER_ID
对应的一个。
基本上,您要进行身份验证的帐户与您提供的CONTENT_OWNER_ID
之间必须达成一致。
最后,您不需要需要 API键来以这种方式调用API;您需要API密钥或经过适当身份验证的OAuth 2.0访问令牌。以下是docs。