如何使用 API(对于多频道网络)从 YouTube CMS 帐户获取收入报告?

How do I get revenue reports from a YouTube CMS account using an API (for an MCN)?

我可以访问 YouTube CMS 帐户(用于 MCN)。在 YouTube 上,我可以用它做很多很多事情,这还包括下载包含收入详细信息的 CSV 报告。

但是我想对该数据进行一些自动处理,从而使用 API 而不是手动 CSV 下载来访问数据。看起来像 YouTube Analytics Content Owner Reports should contain these data as well, thus I tried to get some data from this API (for now only using the API Explorer) 但我唯一能得到的是 "Forbidden" 响应。

API Explorer 告诉我,对于 CMS 帐户,我需要指定 contentOwner==OWNER_NAME,但没有任何地方可以解释 OWNER_NAME 是什么。我试图只插入我的 CMS 帐户的显示名称,用下划线替换空格,但没有成功。我如何知道我的所有者姓名?

此外,当我使用 OAuth 进行身份验证时,我会像往常一样收到帐户列表,我可以在其中选择要使用的帐户(例如,我管理的所有 YouTube 频道),但未列出 CMS 帐户。但是,如果我去 YouTube,我可以单击右上角,然后切换到 CMS。不知道这是否重要...

话又说回来,也许我完全走错了路,因为我想获取连接到我的 MCN 的所有频道的报告,但这并不意味着我拥有这些内容。所以也许我不是内容所有者?在这种情况下:从 API 请求报告的正确方法是什么?

首先,CMS 帐户不是一个单独的帐户,您可以通过 Oath 登录。它更像是一种特权,它与您的一个 google/youtube 帐户相关联。这与 youtube 的常规 channel-management 形成对比,其中每个频道都有自己的登录凭据。

我附上了我的 youtube account-selector-view 的屏幕截图,其中 CMS 属于帐户名@email.com,这也是您必须使用 oauth 授权才能访问您的 CMS 报告的帐户.

此外,您还可以看到 CMS 的名称,在本例中为 "CMSName"。因此,通常这是您将用于 contentOwner==CMSName 的名称。但是,您的 CMS 名称似乎包含空格。不幸的是,由于缺少 admin-rights,我无法重建这种情况,但我建议您也将 _ 用于空格,因为“”和“%20”不映射有效参数的正则表达式。

但是你说,你试过没有成功。但是错误场景太多:

  1. 403 Forbidden:CMS 的名称可能有误,或者所选的 OAth 帐户没有所需的权限。您是否拥有所有必需的范围并选择了正确的帐户?

  2. 400 Bad Request:当请求本身无效时会发生这种情况。因此,如果您选择 contentOwner==CMSName 作为 ids 参数,则始终需要过滤器参数,例如频道==[ChannelIdForWhichIHaveCMSRights]。因此,通常应该有效的 API 请求将如下所示:https://www.googleapis.com/youtube/analytics/v1/reports?ids=contentOwner%3D%3D[CONTENTOWNER_ID]&start-date=2015-01-01&end-date=2015-01-15&metrics=views&filters=channel%3D%3D[CHANNEL_ID_WITH_CMS_RIGHTS]&access_token=[OATH_TOKEN_FOR_RIGHT_ACCOUNT]

如果这两种情况都不适合您并且您仍然收到 403 错误,让我们进行一些调试并尝试获取内容所有者 ID。我现在将介绍 YouTube Content ID API https://developers.google.com/youtube/partner/.

提前说几句:您必须在您的开发者控制台中激活 API,就像您想要用于您的应用程序的任何其他 API 一样。但是:

Note: The YouTube Content ID API is intended for use by YouTube content partners and is not accessible to all developers or to all YouTube users. If you do not see the YouTube Content ID API as one of the services listed in the Google Developers Console, see www.youtube.com/partner to learn more about the YouTube Partner Program.

您在可用列表 API 中看不到它,除非您的帐户已连接到 CMS 并且已经过去了一段时间...需要 7-14 天,除非内容 ID API 可用于您的帐户。这是我从支持人员那里得到的信息,但他们告诉我,这是一个自动步骤。

那么,现在假设您已经可以访问内容 ID API。

您可以获取属于某个帐户的 contentOwnerShips 列表。您可以使用 API 资源管理器 https://developers.google.com/youtube/partner/docs/v1/contentOwners/list#try-it just use as param fetchMine=true and authorize with the https://www.googleapis.com/auth/youtubepartner-content-owner-readonly 范围。响应如下所示:

{ "kind": "youtubePartner#contentOwnerList", "items": [ { "kind": "youtubePartner#contentOwner", "id": "[CMS_ID]", "displayName": "[DisplayName]", "primaryNotificationEmails": [ "mail@random.xx" ], "conflictNotificationEmail": "mail@random.xx", "disputeNotificationEmails": [ "mail@random.xx" ], "fingerprintReportNotificationEmails": [ "mail@random.xx" ] } ] }

这是您从中获取 CMS_ID 的地方,您也可以将其用于任何 API 请求,如 onBehalfOfContentOwner。

要获取属于所有权的所有频道的列表,只需提出此请求

        "https://www.googleapis.com/youtube/v3/channels?part=contentDetails&managedByMe=true&onBehalfOfContentOwner=[CONTENTOWNER]&access_token=[ACCESS_TOKEN]"

但此请求需要授予的“https://www.googleapis.com/auth/youtubepartner”范围。

希望这对您有所帮助,欢迎随时提出更多问题。