如何使用 API(针对多频道网络)从 YouTube CMS 帐户获取收入报告? [英] How do I get revenue reports from a YouTube CMS account using an API (for an MCN)?

查看:41
本文介绍了如何使用 API(针对多频道网络)从 YouTube CMS 帐户获取收入报告?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

但是,我想对该数据进行一些自动处理,从而使用 API 而不是手动 CSV 下载来访问数据.看起来

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

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

注意:YouTube Content ID API 旨在供 YouTube 内容合作伙伴使用,并非所有开发人员或所有 YouTube 用户都可以访问.如果您没有将 YouTube Content ID API 视为 Google Developers Console 中列出的服务之一,请访问 www.youtube.com/partner 以了解有关 YouTube 合作伙伴计划的更多信息.

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

那么,现在假设您已经可以访问 Content ID API.

您可以获取属于某个帐户的 contentOwnerShip 列表.您可以使用 API 浏览器 https://developers.google.com/youtube/partner/docs/v1/contentOwners/list#try-it 只需用作参数 fetchMine=true 并使用 https://www.googleapis.com/auth/youtubepartner-content-owner-readonly 范围.响应如下:

<代码>{"kind": "youtubePartner#contentOwnerList",项目": [{"kind": "youtubePartner#contentOwner","id": "[CMS_ID]","displayName": "[DisplayName]",主要通知电子邮件":[邮件@random.xx"],"conflictNotificationEmail": "mail@random.xx","disputeNotificationEmails": [邮件@random.xx"],指纹报告通知电子邮件":[邮件@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" 范围.

希望这对您有帮助,请随时提出更多问题.

I have access to a YouTube CMS account (for an MCN). On YouTube I can do lots and lots of things with it and this also includes downloading CSV reports which contain detailed information about earnings.

However I want to do some automatic processing of that data and thus access the data using an API instead of a manual CSV download. It looks like the 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) but the only thing I was able to get was a "Forbidden" response.

The API Explorer tells me that for a CMS account I need to specify contentOwner==OWNER_NAME but there is nowhere an explanation what that OWNER_NAME would be. I tried to just insert the displayed name of my CMS account, replacing spaces with underscores, but no success. How do I find out what my owner name is?

Additionally, when I authenticate using OAuth I receive as usual the list of accounts where I can choose which one to use (e.g. all the YouTube channels I am a manager of), but the CMS account is not listed. However if I go to YouTube I can click on the top right corner and then switch to the CMS. No idea if that is important...

Then again, maybe I am totally on the wrong track, because I want to get the reports for all channels connected to my MCN but that does not mean that I own the content. So maybe I am no content owner? In this case: Which is the correct way to request the reports from the API?

解决方案

First of all, the CMS account is not a separate account you can log in via Oath. It is more like a privilege and it is connected to one of your google/youtube accounts. This is in contrast to youtube's regular channel-management, where each channel has it's own login credentials.

I attached a screenshot of my youtube account-selector-view, where the CMS belongs to the account name@email.com, which is also the account you have to use for oauth authorization to access your CMS reports.

Furthermore you can see the name of the CMS, in this case it "CMSName". So, generally this is the name you would use for contentOwner==CMSName. However, your CMS Name seems to include whitespaces. Unfortunately, i cannot reconstruct this case because of missing admin-rights, but i would suggest you the _ for whitespaces too, because " " and "%20" do not map the regular expression for valid params.

But you said, that you had no success by trying it. But there are too error scenarios:

  1. 403 Forbidden: The name of the CMS could either be wrong or the selected OAth account does not have the required privileges. Do you have all required Scopes and selected the correct account?

  2. 400 Bad Request: This happens when the request is invalid per se. So if you choose contentOwner==CMSName as ids param, a filter parameter is always required, e.g. channel==[ChannelIdForWhichIHaveCMSRights]. So, a API request, that should generally work, would look like this: 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]

If both cases won't work for you and you're still getting 403 errors, let us do some debugging and try to fetch the content Owner Id. I will now introduce the YouTube Content ID API https://developers.google.com/youtube/partner/.

A few words in advance: You have to activate the API in your developer console, like any other API you want to use for your app. BUT:

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.

You don't see it in the list auf available APIs, unless your account is connected to a CMS and some time has past... It takes 7-14 days unless the Content ID API is available for your account. This is a information i got from the support, but they told me, that it is an automated step.

So, now lets assume, that you already have access to the Content ID API.

You can fetch a list of contentOwnerShips that belong to an account. You can use the API explorer 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 scope. The response looks like this:

{ "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" ] } ] }

This is where you get your CMS_ID from, you can also use it for any API Request as onBehalfOfContentOwner.

To get a list of all channels that belong to the ownership, simply make this request

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

But this request requires the granted "https://www.googleapis.com/auth/youtubepartner" scope.

Hoe this could help you, feel free to ask further questions.

这篇关于如何使用 API(针对多频道网络)从 YouTube CMS 帐户获取收入报告?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆