Данные Google Analytics из консольного приложения с C#

Я пытаюсь написать службу, которая будет получать данные Google Analytics через службу Windows или консольное приложение.

Что бы я ни пытался, я не могу авторизовать свое приложение с помощью oAuth.

Я могу сделать что-то вроде этого

 var analyticsService = new AnalyticsService("MyApp");
 const string baseUrl = "https://www.google.com/analytics/feeds/data";

 var dataQuery = new DataQuery(baseUrl);

 dataQuery.Ids = TableId;
 dataQuery.Dimensions = "ga:pagePath,ga:date";
 dataQuery.Metrics = "ga:avgTimeOnPage,ga:pageviews,ga:uniquePageviews";
 dataQuery.Sort = "ga:date";
 dataQuery.GAStartDate = "2012-03-01";
 dataQuery.GAEndDate = "2012-04-15";

 Feed = analyticsService.Query(dataQuery);

Это отлично работает, если я использую GDataCredentials с именем пользователя/паролем моей учетной записи. У меня сложилось впечатление, что это дает мне только 200 запросов в день. Мне действительно нужна помощь с некоторым примером кода, как заставить его работать с oAuth, чтобы разрешить запросы 50K. Я полностью бьюсь об стену здесь.

Просто поясню:

У меня есть один аккаунт Google Analytics для моего сайта. Я всегда буду тянуть с этого счета. Как проще всего это сделать, не нарушая низкие ограничения API?

Заранее большое спасибо!


person Greg R    schedule 16.04.2012    source источник
comment
Не дубликат, потому что этот ответ больше не работает из коробки.   -  person Greg R    schedule 16.04.2012


Ответы (2)


После дальнейших исследований похоже, что вариант, который я ищу, — это учетные записи служб, которые недоступны (пока?) для Google Analytics.

https://developers.google.com/accounts/docs/OAuth2ServiceAccount

person Greg R    schedule 16.04.2012

Ответ можно найти здесь.

Цитаты оригинального автора:

Чтобы все заработало, вам понадобится DotNetOpenAuth с http://www.dotnetopenauth.net/ и gdata с http://code.google.com/p/google-gdata/

В DotNetOpenAuth есть образец проекта с именем OAuthConsumer, который вам нужен. Измените его на запрос авторизации для Google Analytics:

GoogleConsumer.RequestAuthorization(google, GoogleConsumer.Applications.Analytics);

Это даст вам Token и Token secret. Вы можете использовать их следующим образом:

    GOAuthRequestFactory requestFactory = new GOAuthRequestFactory("cp", TokenManager.ConsumerKey); //ConsumerKey actually is the name of web application
    requestFactory.ConsumerKey = TokenManager.ConsumerKey;
    requestFactory.ConsumerSecret = TokenManager.ConsumerSecret;
    requestFactory.Token = AccessToken;
    requestFactory.TokenSecret = TokenManager.GetTokenSecret(AccessToken);
    requestFactory.UseSSL = true;
    AnalyticsService service = new AnalyticsService(requestFactory.ApplicationName); // acually the same as ConsumerKey
    service.RequestFactory = requestFactory;

    const string dataFeedUrl = "https://www.google.com/analytics/feeds/data";

    DataQuery query1 = new DataQuery(dataFeedUrl);
person Pavel Krymets    schedule 16.04.2012
comment
Да, моя проблема в том, что я попробовал, и это не работает :) В нем отсутствуют всякие ссылки, изменились API, версии библиотек и т.д. Не могли бы вы предоставить большой образец? - person Greg R; 16.04.2012