【问题标题】:Using Google Analytics to show subset of data for customers of web application using embed api使用 Google Analytics 为使用 embed api 的 Web 应用程序的客户显示数据子集
【发布时间】:2014-09-17 17:29:01
【问题描述】:

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

例如 example.com/business/abc/

因此,对于系统中已登录的企业主,我想提供一个功能“查看页面分析”。它会显示该特定页面的访问次数(可能还有其他一些内容)。

有没有办法在我的限制下使用 Google Analytics API 来做到这一点:

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

我一直在研究这个话题好几个小时试图想出一个解决方案,但什么也想不通。

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

  • http://ga-dev-tools.appspot.com/demos/embed-api/
    • 这基本上正是我希望我的客户在我的网站上显示的内容(如示例中所示),除了 Embed Api 尝试授权用户使用他们自己的(拥有的)谷歌分析。我希望它改用我自己的 Google Analytics(分析)数据(或者说是其中的一部分)
    • 我考虑限制数据访问的方式是让我的每个客户在 GA 中创建一个视图,向该视图添加过滤器,以便在那里仅列出客户页面,将用户分配给视图,并使用嵌入 Api仅显示来自该视图的数据。这样做有几个问题:
      • 要将用户分配给 View,我们需要电子邮件地址。这必须是 google 帐户电子邮件,或来自使用 Google Developers Console(应用程序)创建的项目的帐户。
      • 换句话说,我无法创建(以我知道的任何方式)一个帐户,该帐户将成为我的客户对他们可能感兴趣的 GA 数据子集的屏蔽帐户。它必须是真实的用户或真实的应用程序电子邮件地址。
      • 所以我尝试做的是...我在 Google Developers Console 中创建了一个应用程序,创建了新的 OAuth 服务帐户。使用 Ruby 代码(在生产应用程序中将在后端运行)我获得了 OAuth 令牌。我将此 OAuth 服务帐户的电子邮件作为用户添加到视图中
      • 我希望这个服务器端生成的 oauth 令牌供 Embed Api 使用。这将达到我在后端生成令牌的效果,并且用户可以在我的 GA 属性中没有 GA 用户的情况下使用它。所以我根据文档更改了要使用的基本 Embed 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。任何其他能让我轻松实现用例并让企业主看到他们的营销(流量、销售)效果的东西也会很有趣。

相关:

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

任何帮助表示赞赏!

【问题讨论】:

  • 这个问题确实太大了。如果您将所有数据记录到一个 Google Analytics(分析)帐户,则每次查看您可以针对 GA API 发出的请求限制为 10k,您无法扩展该请求。嵌入式 API 使用 Javascript,您不能将服务帐户与 Javascript 一起使用。
  • 使用带有 serverAuth 参数的 Embed API 是完全按照您的意愿行事的推荐方法。我不知道为什么它不适合你。您能否详细说明您遇到的问题或file an issue
  • @PhilipWalton 感谢您向我保证,这确实是解决此类问题的正确方法。我按照你的要求提交了一个错误code.google.com/p/analytics-issues/issues/detail?id=496

标签: google-analytics google-analytics-api


【解决方案1】:

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

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

如果您输入有效的访问令牌和 ids 来获得您有权访问的视图,下面是一个示例:

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

注意:这样进行身份验证时,会发生同步。如果您习惯了异步身份验证流程(像正常情况一样)并且您在调用 .authorize 后添加了一个监听“成功”事件的事件处理程序,这可能是一个问题,因为这样您的处理程序将永远不会运行。

【讨论】:

    【解决方案2】:

    我认为你需要Google Analytics Super Proxy

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

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

    例如,您有一个用户需要访问访问,网站部分 /sectionA/ 的收入

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

    这会生成一个包含 JSON 数据的结束 URL,该 URL 每天/每小时刷新一次 - 您可以选择。您将此 URL 导入您的应用程序。

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

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

    【讨论】:

    • 我不认为它会解决我的问题。我没有看到任何内置的身份验证/授权以及任何可以设置的过滤。这意味着我的客户可以编辑前端 JS(或直接向 GASP 发出 HTTP 查询)并获取有关其他客户维护的页面的分析数据。
    • 您可以提前为您的管理员 GA 帐户进行预身份验证,然后使用所需的过滤器构建 URL。然后,您的应用程序仅提供正确的 JSON URL 以及最终用户请求所需的数据,可能由下拉菜单或类似提示。
    猜你喜欢
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 2021-11-27
    • 2022-09-23
    • 2014-11-14
    • 1970-01-01
    相关资源
    最近更新 更多