API отчетов YouTube с использованием сервисной учетной записи
Следуя документации Google, вы сможете использовать API отчетов YouTube без аутентификации пользователя с помощью учетной записи службы.
В настоящее время у меня есть очень простой пример, который должен дать мне список доступных рабочих мест, хотя может быть пустым. Но я получаю разрешение 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:
- API отчетности YouTube
- API данных YouTube v3
- API YouTube Analytics
- Google+ API (у меня есть сомнения по этому поводу, если это действительно необходимо)
Я не понимаю, как должна быть связь между проектами в Google Cloud Platform и аккаунтами YouTube.
Связано ли это с делегированием полномочий на уровне домена учетной записи службы?
Вам тогда нужно включить G Suite?
Я вижу похожий вопрос Как предоставить доступ к API отчетов YouTube для учетной записи службы Google? существует, но этот может быть немного в возрасте с момента последнего ответа. Я надеюсь, что мои образцы и дополнения будут проливать новый свет на этот вопрос.
Есть кто-то с рабочим образцом? Может быть на других языках. Пока поток ясен.
1 ответ
Как правило, учетные записи служб могут использоваться для олицетворения учетной записи пользователя. Выполнение авторизованных вызовов упоминается в разделе Подготовка к выполнению авторизованного вызова API.
Но, чтобы ответить на вопрос, учетные записи служб не работают с API YouTube:
Учетные записи служб не работают для вызовов API данных YouTube, поскольку учетные записи служб требуют связанного канала YouTube, и вы не можете связать новые или существующие каналы с учетными записями служб. Если вы используете учетную запись службы для вызова API данных YouTube, сервер API возвращает ошибку с типом ошибки, установленным как неавторизованный, и причиной, установленной как youtubeSignupRequired.