使用服务帐户的 YouTube 报告 API

YouTube Reporting API using Service Account

按照 Google 的文档,您应该可以使用 YouTube 报告 API,无需用户身份验证,只需使用服务帐户。

目前我有一个非常简单的示例,它应该给我一个可用工作列表,但可能是空的。但是我收到 403 权限被拒绝。

请求:

$client = new \Google_Client();
$client->setAuthConfig('service-account-key.json');

$client->addScope(Google_Service_YouTubeReporting::YT_ANALYTICS_MONETARY_READONLY);
$client->addScope(Google_Service_YouTubeReporting::YT_ANALYTICS_READONLY);

$youtube_reporting_service = new \Google_Service_YouTubeReporting($client);

$jobs = $youtube_reporting_service->jobs->listJobs();

响应

Google_Service_Exception

{
    "error": {
        "code": 403,
        "message": "The caller does not have permission",
        "errors": [
            {
                "message": "The caller does not have permission",
                "domain": "global",
                "reason": "forbidden"
            }
        ],
        "status": "PERMISSION_DENIED"
    }
}

我验证了以下 API 已启用:

我不明白 Google Cloud Platform 中的项目与 YouTube 帐户之间的关系。

这与Delegating domain-wide authority to the service account有关吗?

然后您需要启用 G Suite 吗?

我看到一个类似的问题如何授予 google 服务帐户访问 Youtube 报告 API 的权限? 存在,但自上次回复以来可能有点陈旧。我希望我的样本和补充能为这个问题带来新的曙光。

有人有工作样本吗?可能是其他语言。只要流量通畅

一般而言,服务帐户可用于模拟用户帐户。 Preparing to make an authorized API call.

中提到进行授权调用

但是要回答这个问题,Service Accounts do not work with the YouTube API:

Service accounts do not work for YouTube Data API calls because service accounts require an associated YouTube channel, and you cannot associate new or existing channels with service accounts. If you use a service account to call the YouTube Data API, the API server returns an error with the error type set to unauthorized and the reason set to youtubeSignupRequired.