2016-07-16 2 views
0

Я исполняющей полномочия, как это:Получение «Недостаточное разрешение [403]» Ошибка при попытке получить доступ к Google Search Console API

 ClientSecrets secrets; 
     using (var stream = new FileStream(keyFile, FileMode.Open)) 
     { 
      secrets = GoogleClientSecrets.Load(stream).Secrets; 
     } 

     var scopes = new[] 
     { 
      AnalyticsService.Scope.AnalyticsReadonly, 
      WebmastersService.Scope.WebmastersReadonly, 
     }; 

     var credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
      secrets, 
      scopes, 
      AppSettings.Instance.UserName, 
      CancellationToken.None).Result; 

     var service = new WebmastersService(new BaseClientService.Initializer 
     { 
      HttpClientInitializer = credential, 
      ApplicationName = "MyApp", 
     }); 

     var sites = service.Sites.List().Execute(); 

После этого, я могу создать экземпляр WebmastersService успешно; однако все операции завершаются ошибкой «Недостаточное разрешение». API Google Search Console уже включен на веб-сайте https://console.cloud.google.com/apis/enabled. Я могу успешно получить доступ к API Google Analytics, используя те же учетные данные.
Любые идеи, что я делаю неправильно?

ответ

0

Время прошло, но он все еще может быть полезным для кого-то ... :)

Я использую класс X509Certificate, чтобы загрузить мой файл_ключа и он работает как шарм.

ConnectionEmail = "[email protected]"; 
ConnectionPassword = "notasecret"; 
ConnectionKey = File.ReadAllBytes("keyfile.p12"); 

Scopes = new[] 
{ 
    WebmastersService.Scope.Webmasters 
}; 

X509Certificate2 certificate = new X509Certificate2(ConnectionKeyBytes, ConnectionPassword, X509KeyStorageFlags.Exportable); 

Service = new WebmastersService(new BaseClientService.Initializer() 
{ 
    HttpClientInitializer = new ServiceAccountCredential(
     new ServiceAccountCredential.Initializer(ConnectionEmail) { Scopes = Scopes, }.FromCertificate(certificate) 
    ) 
}); 
Смежные вопросы