Ошибка использования служб отчетов YouTube с учетной записью службы
Я получаю сообщение об ошибке ниже, когда пытаюсь получить доступ к API служб отчетов YouTube через учетную запись службы.
Google.GoogleApiException HResult = 0x80131500
Сообщение =Google.Apis.Requests.RequestError. У вызывающей стороны нет разрешения [403] Ошибки [Сообщение [У вызывающей стороны нет разрешения] Местоположение [ - ] Причина [запрещена] Домен [глобальный]]
Когда я искал в Интернете, где-то я увидел, что нам нужна подписка GSuite, чтобы использовать служебную учетную запись с API, правильно?
Вот мой фрагмент кода:
String serviceAccountEmail = "xxxxxxxxxxxxx@youtubereportingapi.iam.gserviceaccount.com";
var certificate = new X509Certificate2(@"xxxxxxxx.p12", "notasecret", X509KeyStorageFlags.Exportable);
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes = new[] { YouTubeReportingService.Scope.YtAnalyticsReadonly, YouTubeReportingService.Scope.YtAnalyticsMonetaryReadonly }
}.FromCertificate(certificate));
var youtubeReportingService = new YouTubeReportingService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = Assembly.GetExecutingAssembly().GetName().Name
});
var jobsListResponse = youtubeReportingService.Jobs.List().Execute(); // Here its throwing error
1 ответ
Чтобы использовать служебную учетную запись, вы должны поделиться с ней данными. Я никогда не слышал об использовании GSuite с учетной записью YouTube. Администратор может попытаться настроить делегирование домена в учетную запись службы. Однако, насколько мне известно, нет возможности поделиться данными YouTube с учетной записью сервиса.
Сервисные аккаунты не поддерживаются API YouTube. Вам нужно будет использовать Oauth2 и сохранить токен обновления для доступа позже. В документах упоминается только OAuth2.