Я пытаюсь сделать некоторые аналитические запросы с сервера на сервер. Я использую laravel с библиотекой https://github.com/google/google-api-php-client .
Это код, который я использую:
$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);
Моя проблема в том, что аутентификация работает очень хорошо, но я не могу заставить запрос аналитики работать, я получаю следующую ошибку:
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 & конца дата = 2014-06-30 & метрики = мнения% 252CestimatedMinutesWatched и размеры = день и сортировать = день% 252C-просмотры и _h = 1 &
Есть идеи?
Я протестировал ваш запрос, и он работает нормально, но, похоже, YouTube не поддерживает учетные записи служб. В документации говорится, что в этом случае он должен вернуть 403
, но по какой-то причине он возвращает 400
.
Вам нужно добавить ключ API Google
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%2Cviews&key={YOUR_API_KEY}
также, если вы посмотрите на свою строку, у вас есть ошибка типа в конце, где «-views» должен быть просто «просмотрами» без тире. Для создания правильной ссылки вы можете использовать автоматический инструмент Google.