Я использовал функцию «Попробуйте этот API» на https://developers.google.com/youtube/analytics/reference/reports/query и он получает много данных.
Я делаю тот же запрос, используя PHP Google SDK и получая пустой массив строк в объекте Google_Service_YouTubeAnalytics_QueryResponse. Я даже скопировал и вставил массив $ params из фрагмента кода PHP.
$params = [
'dimensions' => 'day',
'endDate' => '2018-08-01',
'ids' => 'channel==MINE',
'includeHistoricalChannelData' => false,
'metrics' => 'views,estimatedMinutesWatched,averageViewDuration,averageViewPercentage,subscribersGained',
'startDate' => '2017-07-01'
];
$this->setService(new \Google_Service_YouTubeAnalytics($this->client));
$response = $this->getService()->reports->query($params);
Я использую эти области:
'https://www.googleapis.com/auth/yt-analytics-monetary.readonly',
'https://www.googleapis.com/auth/yt-analytics.readonly',
'https://www.googleapis.com/auth/youtube.force-ssl',
'https://www.googleapis.com/auth/youtube.readonly'
Я пробовал разные комбинации.
Это объект ответа:
Google_Service_YouTubeAnalytics_QueryResponse Object
(
[collection_key:protected] => rows
[columnHeadersType:protected] => Google_Service_YouTubeAnalytics_ResultTableColumnHeader
[columnHeadersDataType:protected] => array
[errorsType:protected] => Google_Service_YouTubeAnalytics_Errors
[errorsDataType:protected] =>
[kind] => youtubeAnalytics#resultTable
[rows] => Array
(
)
[internal_gapi_mappings:protected] => Array
(
)
[modelData:protected] => Array
(
)
[processed:protected] => Array
(
)
[columnHeaders] => Array
(
[0] => Google_Service_YouTubeAnalytics_ResultTableColumnHeader Object
(
[columnType] => DIMENSION
[dataType] => STRING
[name] => day
[internal_gapi_mappings:protected] => Array
(
)
[modelData:protected] => Array
(
)
[processed:protected] => Array
(
)
)
[1] => Google_Service_YouTubeAnalytics_ResultTableColumnHeader Object
(
[columnType] => METRIC
[dataType] => INTEGER
[name] => views
[internal_gapi_mappings:protected] => Array
(
)
[modelData:protected] => Array
(
)
[processed:protected] => Array
(
)
)
[2] => Google_Service_YouTubeAnalytics_ResultTableColumnHeader Object
(
[columnType] => METRIC
[dataType] => INTEGER
[name] => estimatedMinutesWatched
[internal_gapi_mappings:protected] => Array
(
)
[modelData:protected] => Array
(
)
[processed:protected] => Array
(
)
)
[3] => Google_Service_YouTubeAnalytics_ResultTableColumnHeader Object
(
[columnType] => METRIC
[dataType] => INTEGER
[name] => averageViewDuration
[internal_gapi_mappings:protected] => Array
(
)
[modelData:protected] => Array
(
)
[processed:protected] => Array
(
)
)
[4] => Google_Service_YouTubeAnalytics_ResultTableColumnHeader Object
(
[columnType] => METRIC
[dataType] => FLOAT
[name] => averageViewPercentage
[internal_gapi_mappings:protected] => Array
(
)
[modelData:protected] => Array
(
)
[processed:protected] => Array
(
)
)
[5] => Google_Service_YouTubeAnalytics_ResultTableColumnHeader Object
(
[columnType] => METRIC
[dataType] => INTEGER
[name] => subscribersGained
[internal_gapi_mappings:protected] => Array
(
)
[modelData:protected] => Array
(
)
[processed:protected] => Array
(
)
)
)
)
Я убедился, что использую те же аккаунты / бренды Google. Я также использую объект Google_service_Youtube для вызова $this->getService()->channels->listChannels('snippet', $params);
в другом месте для списка каналов, и это работает просто отлично.
Задача ещё не решена.
Других решений пока нет …