将YouTube Reporting Services与服务帐户配合使用时出错

时间:2018-04-09 18:54:07

标签: google-api youtube-api youtube-analytics-api

当我尝试使用服务帐户访问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

1 个答案:

答案 0 :(得分:0)

要使用服务帐户,您必须与之共享数据。我从未听说过将GSuite与YouTube帐户一起使用,您可以让管理员尝试将域范围授权设置为服务帐户。但据我所知,无法与服务帐户共享YouTube数据。

YouTube API不支持服务帐户。您需要使用Oauth2并保存刷新令牌以便以后访问。 docs仅提及OAuth2。