2016-07-16 10 views
0

にアクセスしようとすると、「十分な権限が[403]」エラーを取得:この後は、私はこのような認証を行うよGoogle検索コンソール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のインスタンスを作成することができます。ただし、すべての操作は、 "不十分なアクセス許可"エラーで失敗します。 Google Search Console APIは既にhttps://console.cloud.google.com/apis/enabledウェブサイトで有効になっています。同じ資格情報を使用してGoogleアナリティクスAPIに正常にアクセスできます。
アイデアは何ですか?

答えて

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) 
    ) 
}); 
関連する問題