问题描述
我正在尝试从服务器到服务器进行一些分析查询.我正在使用 laravel 和 https://github.com/google/google-api-php-客户端 库.
I'm trying to make some analytics query from server to server. I'm using laravel with https://github.com/google/google-api-php-client library.
这是我正在使用的代码:
This is the code I'm using:
$client = new Google_Client();
$key = file_get_contents(storage_path('key.p12'));
$cred = new Google_Auth_AssertionCredentials(
'***@developer.gserviceaccount.com', array('https://www.googleapis.com/auth/youtube.readonly', 'https://www.googleapis.com/auth/yt-analytics.readonly'), $key);
$client->setAssertionCredentials($cred);
if ($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
Session::put('service_token', $client->getAccessToken());
$service = new Google_Service_YouTubeAnalytics($client);
$id = 'channel==MINE';
$start_date = '2014-05-01';
$end_date = '2014-06-30';
$optparams = array(
'dimensions' => 'day',
'sort' => 'day,-views'
);
$metric = 'views,estimatedMinutesWatched';
$api = $service->reports->query($id, $start_date, $end_date, $metric, $optparams);
$service = new Google_Service_YouTubeAnalytics($client);
$id = 'channel==MINE';
$start_date = '2014-05-01';
$end_date = '2014-06-30';
$optparams = array(
'dimensions' => 'day',
'sort' => 'day,-views'
);
$metric = 'views,comments,favoritesAdded,likes,dislikes,estimatedMinutesWatched,averageViewDuration';//'views,estimatedMinutesWatched';
$api = $service->reports->query($id, $start_date, $end_date, $metric, $optparams);
我的问题是身份验证工作正常,但我无法让分析查询开始工作,我收到以下错误:
My problem is that the authentication is working just fine, but I can't get the analytics query get to work, I'm getting the following error:
Error calling GET https://www.googleapis.com/youtube/analytics/v1/reports?ids=channel%3D%3DMINE&start-date=2014-05-01&end-date=2014-06-30&metrics=views%2CestimatedMinutesWatched&dimensions=day&sort=day%2C-views: (400) Invalid query. Query did not conform to the expectations.
即使在 API 资源管理器中运行相同的查询:https://developers.google.com/apis-explorer/#p/youtubeAnalytics/v1/youtubeAnalytics.reports.query?ids=channel%253D%253DMINE&start-date=2014-05-01&end-date=2014-06-30&metrics=views%252CestimatedMinutesWatched&dimensions=day&sort=day%252C-views&_h=1&
Even though the same exact query is working in the API explorer: https://developers.google.com/apis-explorer/#p/youtubeAnalytics/v1/youtubeAnalytics.reports.query?ids=channel%253D%253DMINE&start-date=2014-05-01&end-date=2014-06-30&metrics=views%252CestimatedMinutesWatched&dimensions=day&sort=day%252C-views&_h=1&
有什么想法吗?
推荐答案
我测试了您的查询,它运行良好,但显然 YouTube 不支持服务帐户.文档 说它应该返回一个 403
case,但由于某种原因,它返回 400
.
I tested your query and it's working fine, but apparently YouTube does not support service accounts. The documentation says it should return a 403
in this case, but for some reason it's returning 400
.
这篇关于Youtube Analytics API PHP 无效查询.查询不符合预期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!