2012-04-16 31 views
0

我正在尝试编写一项服务,通过Windows服务或控制台应用程序提取Google Analytics数据。来自控制台应用程序的Google Analytics数据与C#

无论我怎么努力,我无法使用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分析占了我的网站。我将永远从这一个帐户拉。什么是最简单的方法来做到这一点,而不会降低API的极限值?

非常感谢!

+0

不是重复的,因为这个答案不能用于开箱 – 2012-04-16 14:15:34

回答

0

可以找到答案here.

从原作者行情:

为了使它工作,你需要DotNetOpenAuth从 http://www.dotnetopenauth.net/和GDATA从 http://code.google.com/p/google-gdata/

在DotNetOpenAuth有示例项目名为OAuthConsumer,您需要 。将其更改为requiest授权分析:

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

这将让你令牌和令牌密钥。您可以使用它们像这样:

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); 
+0

对,我的问题是,我试过了,它不工作:)它缺少各种引用,API已经改变,库的版本等等。你能提供一个大样本吗? – 2012-04-16 14:08:23