.Net борется с инструментами для веб-мастеров (пакет Nuget Google.Apis.Webmasters.v3)

Интересно, кто-нибудь еще, кроме меня, использовал новые функции Search Analytics API Google Webmaster Tools через.Net?

Я использую пакет Nuget Google.Apis.Webmasters.v3 и прошел проверку подлинности и подключение (используя учетную запись службы)

Однако я изо всех сил пытаюсь получить что-нибудь с помощью Search Analytics.

Я не смог найти примеры кода в Интернете, поэтому руководствовался информацией о классе по адресу https://developers.google.com/resources/api-libraries/documentation/webmasters/v3/csharp/latest/annotated.html и многим другим. догадок.

Вот код, который я использую:

SearchanalyticsResource mySearchanalyticsResource = new SearchanalyticsResource(service);

SearchAnalyticsQueryRequest myRequest = new SearchAnalyticsQueryRequest(); 
myRequest.StartDate = "2015-08-01"; 
myRequest.EndDate = "2015-08-31"; 
myRequest.RowLimit = 10;

SearchanalyticsResource.QueryRequest myQueryRequest = mySearchanalyticsResource.Query(myRequest, site.SiteUrl); 
SearchAnalyticsQueryResponse myQueryResponse = myQueryRequest.Execute();

Он работает нормально до метода Execute, когда появляется сообщение "Произошла ошибка, но ответ об ошибке не может быть десериализован". Подробности исключения ниже...

Newtonsoft.Json.JsonReaderException {"Ошибка синтаксического анализа значения NaN. Path '', строка 0, позиция 0."}

Любая помощь или примеры кода будут очень благодарны!

1 ответ

Решение

Это компилирует, но не возвращает никаких данных для меня.

Auth:

 public static WebmastersService WMAuthenticateOauth(string clientId, string clientSecret, string userName)
        {

            string[] scopes = new string[] { WebmastersService.Scope.Webmasters };     // View analytics data

            try
            {
                // here is where we Request the user to give us access, or use the Refresh Token that was previously stored in %AppData%
                UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets { ClientId = clientId, ClientSecret = clientSecret }
                                                                                             , scopes
                                                                                             , userName
                                                                                             , CancellationToken.None
                                                                                             , new FileDataStore(".", true)).Result;

                WebmastersService service = new WebmastersService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = credential,
                    ApplicationName = "WebMasters API Sample",
                });
                return service;
            }
            catch (Exception ex)
            {

                Console.WriteLine(ex.InnerException);
                return null;

            }

        }

Запрос

var service = Authentcation.WMAuthenticateOauth(clientid, secret, "testmmm");


   IList<string> newlist = new List<string> ();
   newlist.Add("country");
   newlist.Add("device");

   SearchAnalyticsQueryRequest body = new SearchAnalyticsQueryRequest();
   body.StartDate = "2015-04-01";
   body.EndDate = "2015-05-01";
   body.Dimensions = newlist;

   var result = service.Searchanalytics.Query(body, "http://www.daimto.com/").Execute();

Я также пробовал тестировать, используя попытку в нижней части этой страницы. Это тоже ничего не возвращает.

Странное API это.

Обновить:

Я наконец получил данные, я установил даты

body.StartDate = "2015-09-01";
body.EndDate = "2015-09-15";

Интересно, если эта вещь имеет ограниченные данные, она только возвращается.

Другие вопросы по тегам