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.

Другие вопросы по тегам