使用Google Analytics(分析)使用embed api为Web应用程序的客户显示数据子集

时间:2014-09-17 17:29:01

标签: google-analytics google-analytics-api

我正在开发一个应用程序,其中每个“业务”都有自己的页面(或者更多的页面):

例如示例。 COM /商业/ ABC /

因此,对于系统中已登录的业务所有者,我想提供一个“查看页面分析”功能。它将显示特定页面有多少次访问(可能还有其他一些事情)。

使用带有约束条件的Google AnalyticsAPI是否有办法实现此目的:

  • 我不希望客户提供自己的UA代码
  • 我不希望他们要求拥有GA帐户
  • 客户无需拥有Google电子邮件帐户
  • 我不想自己构建整个前端和后端。我宁愿使用现有的东西

我一直在研究这个话题几个小时试图提出一个解决方案而且无法弄明白。

这是我尝试过的以及发生在我身上的问题:

  • http://ga-dev-tools.appspot.com/demos/embed-api/
    • 这基本上是我希望我的客户在我的网站上显示的内容(如示例中所示),除了Embed Api尝试授权用户使用他们自己的(拥有的)Google分析。我希望它能够使用我自己的Google Analytics数据(或者更确切地说是其中的一部分)
    • 我认为限制数据访问的方式是我的每个客户在GA中创建一个View,在该视图中添加过滤器以便只在那里列出客户页面,将User分配给视图,并使用Embed Api仅显示该视图中的数据。这有几个问题:
      • 要将用户分配到View,我们需要电子邮件地址。这必须是Google帐户电子邮件,或者是使用Google Developers Console(应用程序)创建的项目中的帐户。
      • 换句话说,我无法创建(以我知道的任何方式)和帐户,这将成为我的客户的屏蔽帐户,以便他们感兴趣的我的GA数据的子集。它必须是真实的用户或真实的应用程序电子邮件地址。
      • 所以我尝试做的是...我在Google Developers Console中创建了一个应用程序,创建了新的OAuth服务帐户。使用Ruby代码(生产应用程序将在后端运行)我获得了OAuth令牌。我将我的OAuth服务帐户的这封电子邮件作为用户添加到了视图
      • 我希望Embed Api使用此服务器端生成的oauth令牌。这将实现我在我的后端生成令牌的效果,用户可以在我的GA属性中使用GA用户而不使用GA用户。所以我根据文档更改了使用
      • 的基本嵌入Api示例
gapi.analytics.auth.authorize({
  container: 'auth',
  clientid: 'xxx.apps.googleusercontent.com',
    serverAuth: {
      access_token: 'Server side generated token'
    }
});

而不是

gapi.analytics.auth.authorize({
  container: 'auth',
  clientid: 'xxx.apps.googleusercontent.com',
});

效果并不像我预期的那样。该示例不再显示(我无法看到我的数据),但我可以在Chrome的Netowrking部分看到它实际上是从GA接收真实数据。但由于未知原因,没有任何东西出现。

我试图避免的是构建一个解决方案,我需要构建服务器端代码,查询GA以获取数据,将其提供给前端,然后JS负责显示它。我宁愿使用Embed API,但它似乎不适合我不希望用户使用他们的UA数据但是我自己的UA数据仅限于某个范围的用例。我想至少解决了解决方案的前端或后端部分。该解决方案甚至不需要基于Google Analytics。还有其他任何可以让我轻松实现用例并让企业主看到他们的营销效果(流量,销售)的东西也会很有趣。

相关:

  • stackoverflow .com / questions / 13514775 / using-google-analytics-api-to-show-of-data-for-customers-of-web-applicati
  • stackoverflow .com / questions / 3994708 / google-analytics-customer-data
  • stackoverflow .com / questions / 4245132 / google-analytics-api-filter-by-uri
  • embeddedanalytics .com似乎可能有用,但它们的页面和图形看起来就像几年前一样。我想要更漂亮的东西。
  • oocharts .com似乎很有趣,因为他们的docs.oocharts .com所说的查询。但他们不会对他们的产品收取任何费用,所以我对他们的商业模式持怀疑态度,以及这是否是一个很好的长期解决方案。
  • 我没有足够的业力来发布链接;)

TLDR:向我的客户显示我的GA数据的子集,而不强迫他们成为GA用户并将其添加到我的GA帐户。

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:3)

如果没有看到您的代码,很难知道问题出在哪里,但使用serverAuth选项绝对有效。使用serverAuth选项时,您不需要指定客户端ID或容器,您只需输入以下内容:

gapi.analytics.auth.authorize({
  serverAuth: {
    access_token: 'Server side generated token'
  }
});

以下是一个示例,如果您输入有效的访问令牌,ids可用于您有权访问的视图,则该示例将有效:

http://jsbin.com/vukezoheyeco/3/edit

注意:在执行此类身份验证时,会发生同步。如果您习惯于异步身份验证流程(正常情况下)并添加一个事件处理程序来监听"成功"这可能是一个问题。调用.authorize之后的事件,因为那时你的处理程序永远不会运行。

答案 1 :(得分:1)

我认为你需要Google Analytics Super Proxy

您下载github软件包并上传到您自己的App Engine项目,进行一些最小配置,然后您就可以设置一个界面,您可以在其中设置无需用户登录的Google AnalyticsAPI调用。

它提供了可用于在前端构建数据表的最终用户URL,它还提供了数据表格式,因此可以直接插入Google Charts。

例如,您有一个需要访问访问权限的用户,网站部分/部分A /

的收入

您设置了GA超级代理,为其提供的网址仅包含该部分的数据 - 您可以在GA query explorer中尝试查询。在这种情况下,metrics = ga:visits,ga:productRevenue和filter〜= ga:page = / sectionA /

这将生成一个带有JSON数据的结束URL,每天/每小时刷新一次 - 您的选择。您可以将此网址导入您的应用。

最终用户然后登录到您的应用,并查看从结束URL生成的图表数据以进行登录。他们不需要了解GA超级代理,他们只看到最终结果图表。

通过提供下拉菜单来选择他们看到的数据图表,您可以变得更加复杂,这会更改所请求的GA超级代理URL。