当我尝试使用服务帐户访问YouTube Reporting Services API时,我遇到了以下错误。
Google.GoogleApiException HResult = 0x80131500
Message = 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
答案 0 :(得分:0)
要使用服务帐户,您必须与之共享数据。我从未听说过将GSuite与YouTube帐户一起使用,您可以让管理员尝试将域范围授权设置为服务帐户。但据我所知,无法与服务帐户共享YouTube数据。
YouTube API不支持服务帐户。您需要使用Oauth2并保存刷新令牌以便以后访问。 docs仅提及OAuth2。