使用服务帐户的YouTube Reporting API

时间:2018-01-18 14:53:39

标签: php youtube youtube-api gcp google-client-login

根据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:

  • YouTube Reporting API
  • YouTube Data API v3
  • YouTube Analytics API
  • Google+ API (如果真的有必要,请对此问题表示怀疑)

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

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

您是否需要启用G Suite?

我看到一个类似的问题How to grant access to Youtube Reporting API for a google service account? 存在,但是自上次回复以来,这个问题可能有点老化。我希望我的样本和新增内容将为这个问题带来新的亮点。

是否有人有工作样本?可能是其他语言。只要流程清晰。

1 个答案:

答案 0 :(得分:0)

通常,服务帐户可用于模拟用户帐户。 Preparing to make an authorized API call中提到了授权电话。

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

  

服务帐户不适用于YouTube Data API调用,因为   服务帐户需要关联的YouTube频道,而您却不能   将新的或现有的渠道与服务帐户相关联。如果你使用   服务帐户调用YouTube Data API,API服务器返回   错误类型设置为未授权且设置原因的错误   youtubeSignupRequired。