Google Analytics API 和 .Net

问题描述 投票:0回答:4

Google 几天前宣布了 Analytics Data Export API,从而使获取网站的分析数据变得更加容易。该 API 首次与 Java 和 JavaScript 客户端一起使用,但没有直接的 .Net 支持(除了直接支持 XML)。不过,该 API 似乎与其他 Google 数据 API 类似,并且有一个用于这些 API 的 .Net 客户端。有没有人尝试过使用该库中的组件来获取分析数据?

我正在构建一个 ASP.Net MVC 站点,并认为我应该使用 Google Analytics 来生成“观看次数最多”列表和类似的内容(因为 Google 可能更擅长清除虚假请求、机器人等)。 )。如果您对此想法有任何想法,我也很乐意听到它们。

.net asp.net-mvc google-analytics analytics
4个回答
12
投票
检查 Google .NET 库的

trunk,他们添加了 Analytics 支持。

另请查看他们的小组对此的帖子:

http://groups.google.com/group/gdata-dotnet-client-library/browse_thread/thread/2d2eec9103b731c6

http://groups.google.com/group/gdata-dotnet-client-library/browse_thread/thread/70c6638734823b8d


4
投票
在这里查看我的帖子位置:

http://www.akamarketing.com/blog/103-introducing-google-analytics-api-with-aspnet-c.html

它没有使用您提到的内置库,但它运行得很好。整个 API 是 XML/HTTP,所以使用起来非常方便。您基本上向 Google 请求一个网页,然后检查响应是否有您需要的内容。


3
投票
//For this you will have to add some dll in your .net project i.e. using DotNetOpenAuth.OAuth2; using Google.Apis.Authentication.OAuth2; using Google.Apis.Authentication.OAuth2.DotNetOpenAuth; using Google.Apis.Analytics.v3; using Google.Apis.Analytics.v3.Data; using Google.Apis.Services; public ActionResult GetAnalyticsData(string GroupType, string date_from, string date_to) { try { AnalyticsService gas = AuthenticateUser(); // Creating our query DataResource.GaResource.GetRequest r = gas.Data.Ga.Get("ga:88028792", date_from, date_to, "ga:visits, ga:pageviews, ga:users, ga:newUsers, ga:sessions"); //Hour,Day,Week,Month if (GroupType == "Hour") { r.Dimensions = "ga:nthHour"; } else if (GroupType == "Day") { r.Dimensions = "ga:nthDay"; } else if (GroupType == "Week") { r.Dimensions = "ga:nthWeek"; } else if (GroupType == "Month") { r.Dimensions = "ga:nthMonth"; } //d: Execute and fetch the results of our query GaData d = r.Execute(); List<TotalsForAllResults> tr = new List<TotalsForAllResults>(); List<CustomeData> cd = new List<CustomeData>(); foreach (var item in d.Rows) { CustomeData mydata = new CustomeData(); // mydata.CreatedDate = item[0].ToString(); mydata.visits = Convert.ToInt32(item[1]); mydata.pageviews = Convert.ToInt32(item[2]); mydata.users = Convert.ToInt32(item[3]); mydata.newUsers = Convert.ToInt32(item[4]); mydata.sessions = Convert.ToInt32(item[5]); #region Date Conversion DateTime Now = DateTime.Parse(date_from, CultureInfo.InvariantCulture, DateTimeStyles.None); DateTime TempDate = new DateTime(Now.Year, Now.Month, Convert.ToInt32(Now.ToString("dd"))); if (GroupType == "Day") { TempDate = TempDate.AddDays((Convert.ToInt32(item[0]))); mydata.CreatedDate = TempDate.ToLongDateString(); } else if (GroupType == "Hour") { TempDate = TempDate.AddHours((Convert.ToInt32(item[0]))); mydata.CreatedDate = TempDate.ToString("dddd, MMM dd, yyyy hh:mm tt"); } else if (GroupType == "Month") { TempDate = TempDate.AddMonths((Convert.ToInt32(item[0]))); mydata.CreatedDate = TempDate.ToString("MMMM, yyyy"); } else { //DateTime NewDate = DateTime.Parse(date_from, CultureInfo.InvariantCulture, DateTimeStyles.None); //NewDate = NewDate.AddDays(((Convert.ToInt32(item[0]) + 1) - 1) * 7); //string NewDate1 = NewDate.ToLongDateString(); mydata.CreatedDate = item[0].ToString(); } #endregion cd.Add(mydata); } foreach (var item in d.TotalsForAllResults) { TotalsForAllResults tfa = new TotalsForAllResults(); tfa.metrics = item.Key; tfa.count = Convert.ToInt32(item.Value); tr.Add(tfa); } // At this point, d should contain the number of visitors you got between dates return Json(new { TotalsForAllResults = tr, LineChartData = cd }); } catch (Exception ex) { return Json(null); } } public AnalyticsService AuthenticateUser() { // This is the physical path to the key file you downloaded when you created your Service Account String key_file = @"E:\be8eab1c9893eac9f9fdac95cd64bcc58c86a158-privatekey.p12";//@"C:\Users\path\XXXXX-privatekey.p12"; // Is the "Email Address", not the "Client ID" one!!! String client_id = "450122396803-jt0vt4do8ui6ah74iv1idh1pt9jsvqa6@developer.gserviceaccount.com"; //"[email protected]"; // Probably the password for all is "notasecret" String key_pass = "notasecret"; String scope_url = "https://www.googleapis.com/auth/" + Google.Apis.Analytics.v3.AnalyticsService.Scopes.Analytics.ToString().ToLower(); //scope_url = "https://www.googleapis.com/auth/analytics"; //scope_url = "https://www.googleapis.com/auth/analytics.readonly"; AuthorizationServerDescription desc = GoogleAuthenticationServer.Description; X509Certificate2 key = new X509Certificate2(key_file, key_pass, X509KeyStorageFlags.Exportable); AssertionFlowClient client = new AssertionFlowClient(desc, key) { ServiceAccountId = client_id, Scope = scope_url }; OAuth2Authenticator<AssertionFlowClient> auth = new OAuth2Authenticator<AssertionFlowClient>(client, AssertionFlowClient.GetState); //AnalyticsService gas = new AnalyticsService(auth); AnalyticsService gas = new AnalyticsService(new BaseClientService.Initializer() { Authenticator = auth }); return gas; } using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace GAExampleMVC.Models { public class TotalsForAllResults { public string metrics { get; set; } public int count { get; set; } public double Percent { get; set; } public DateTime Time { get; set; } } public class CustomeData { public string CreatedDate { get; set; } public int visits { get; set; } public int pageviews { get; set; } public int users { get; set; } public int newUsers { get; set; } public int sessions { get; set; } public string avgSessionDuration { get; set; } public double bounceRate { get; set; } public double percentNewSessions { get; set; } public double percentNewVisits { get; set; } public string Location { get; set; } public int uniquePageviews { get; set; } public string pagePath { get; set; } }

}


© www.soinside.com 2019 - 2024. All rights reserved.