Google Analytics API - 在服务器端以编程方式获取页面浏览量 [英] Google Analytics API - Programmatically fetch page views in server side

查看:22
本文介绍了Google Analytics API - 在服务器端以编程方式获取页面浏览量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们有一个由多个页面组成的 Web 应用程序.我们将我们的网络应用程序域注册到 Google Analytics,页面浏览量跟踪按预期工作(在 Analytics 面板中,我们可以看到每个页面的页面浏览量).现在我们希望将此页面视图信息存储在我们数据库的后端中.因此,我们希望创建一个每天运行一次的后端流程,并从 Analytics API 获取页面浏览量.

We have a web application that consists of several pages. We registered our web app domain to Google Analytics and page views tracking works as expected (In the Analytics panel we can see page views for each page). Now we want this page views info to be stored in the back-end inside our DB. So we want to create a back-end process that will run once each day, and fetch the page views from Analytics API.

这当然需要在代码中完成.从最初的研究来看,为了访问 Analytics API,必须进行身份验证过程,这意味着人类用户必须输入 ID 和密码.

This is of course need to be done in code. From initial research it seems that in order to access Analytics API an authentication process must take place, meaning a human user must type in an id and password.

问题是,只用代码能做到吗?

The question is, can it be done with code only ?

推荐答案

    //-------------- Get Auth Token -------------------

    WebClient webClient = new WebClient();
    NameValueCollection data = new NameValueCollection();
    data.Add("accountType", "GOOGLE");
    data.Add("Email", "xxxx@gmail.com");
    data.Add("Passwd", "xxxx");//Passwd, not a misspell.
    data.Add("service", "analytics");
    data.Add("source", "xxxx-xxxx-xx");//Could be anything.

    byte[] bytes = webClient.UploadValues("https://www.google.com/accounts/ClientLogin", "POST", data);
    string tokens = Encoding.UTF8.GetString(bytes);
    string authToken = extractAuthToken(tokens);

    //-------------- Get page views -------------------

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

    //Required:
    string ids = "ga:xxxx";
    string metrics = "ga:pageviews";
    string startDate = "2011-06-25";
    string endDate = "2011-07-25";

    //Optional:
    string dimensions = "ga:pagePath";
    string sort = "-ga:pageviews";            

    string feedUrl = string.Format("{0}?ids={1}&dimensions={2}&metrics={3}&sort={4}&start-date={5}&end-date={6}",
        feed, ids, dimensions, metrics, sort, startDate, endDate);

    webClient.Headers.Add("Authorization", "GoogleLogin " + authToken);
    string result = webClient.DownloadString(feedUrl);

    //-------------- Extract data from xml -------------------

    XDocument xml = XDocument.Parse(result);
    var ns1 = "{http://www.w3.org/2005/Atom}";
    var ns2 = "{http://schemas.google.com/analytics/2009}";

    var q = from entry in xml.Descendants()
            where entry.Name == ns1 + "entry"
            select new
            {
                PagePath = entry.Element(ns2 + "dimension").Attribute("value").Value,
                Views = entry.Element(ns2 + "metric").Attribute("value").Value
            };

    //-------------- Do something with data -------------------
    foreach (var page in q)
    {
        Debug.WriteLine(page.PagePath + " " + page.Views);                
    }

    //-------------- Help Method -------------------
    private string extractAuthToken(string data)
    {          
        var tokens = data.Split(new string[] { "
" }, StringSplitOptions.RemoveEmptyEntries);            
        return tokens.Where(token => token.StartsWith("Auth=")).Single();
    }

这篇关于Google Analytics API - 在服务器端以编程方式获取页面浏览量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆