【问题标题】:Fetch data from Google Analytics API从 Google Analytics API 获取数据
【发布时间】:2015-10-01 01:54:24
【问题描述】:

我想要什么:网站应该在未经授权的情况下显示分析数据。

我做了什么:我在谷歌应用引擎上有一个应用,启用了 API 并创建了一个提供 json 文件的服务帐户。

我尝试做同样的事情:https://ga-dev-tools.appspot.com/embed-api/custom-components/,但没有成功。

然后我遇到了这个问题:http://code.google.com/p/analytics-issues/issues/detail?id=496 并将我的代码更改为这样

<!DOCTYPE html>
<html>
<head>
  <title>Embed API Demo</title>
</head>
<body>

<!-- Step 1: Create the containing elements. -->

<section id="auth-button"></section>
<section id="view-selector"></section>
<section id="timeline"></section>

<!-- Step 2: Load the library. -->

<script>
(function(w,d,s,g,js,fjs){
  g=w.gapi||(w.gapi={});g.analytics={q:[],ready:function(cb){this.q.push(cb)}};
  js=d.createElement(s);fjs=d.getElementsByTagName(s)[0];
  js.src='https://apis.google.com/js/platform.js';
  fjs.parentNode.insertBefore(js,fjs);js.onload=function(){g.load('analytics')};
}(window,document,'script'));
</script>

<script>
gapi.analytics.ready(function() {

  // Step 3: Authorize the user.


  gapi.analytics.auth.authorize({
    serverAuth: '<server auth key>' 
  });

  // Step 4: Create the view selector.

  var viewSelector = new gapi.analytics.ViewSelector({
    container: 'view-selector'
  });

  // Step 5: Create the timeline chart.

  var timeline = new gapi.analytics.googleCharts.DataChart({
    reportType: 'ga',
    query: {
      'dimensions': 'ga:date',
      'metrics': 'ga:sessions',
      'start-date': '30daysAgo',
      'end-date': 'yesterday',
    },
    chart: {
      type: 'LINE',
      container: 'timeline'
    }
  });

  // YOU MUST CALL THIS MANUALLY HERE INSTEAD OF WAITING FOR CALLBACK
  viewSelector.execute();

  // Step 6: Hook up the components to work together.

  gapi.analytics.auth.on('success', function(response) {
    viewSelector.execute();
  });

  viewSelector.on('change', function(ids) {
    var newIds = {
      query: {
        ids: ids
      }
    }
    timeline.set(newIds).execute();
  });
});
</script>
</body>
</html>

我尝试查看几个文档以获取服务器身份验证密钥,但未能获得。

任何人都可以帮助设置服务器身份验证密钥,这样我就可以解决我在没有身份验证的情况下显示图表的目的吗?

谢谢, 沙拉德索尼

【问题讨论】:

标签: google-app-engine google-analytics


【解决方案1】:

Embeded API Getting started

Embed API 为您处理几乎所有的授权过程 通过提供使用熟悉的一键式登录组件 OAuth 2.0 流程。为了让这个按钮在你的页面上工作 您需要一个客户 ID。

嵌入式 API 旨在与 Oauh2 一起使用并要求用户进行身份验证,它并非旨在与服务帐户一起使用。我从未见过在 JavaScript 中工作的服务帐户的代码。这可能是因为包括我自己在内的很多人并不认为客户端 JavaScript 中的服务帐户是安全的,甚至可能违反 Goggles 的新使用条款。

如果您想使用服务帐户,则需要切换到服务器端语言进行身份验证。嵌入式 API 仅使用 Google 图表,因此您也可以手动编写代码。

【讨论】:

  • 感谢 DalmTo,你能分享任何有用的文档来实现 PHP 上的授权。
  • 为了不必要地吹毛求疵,实际上有一种情况适用于 javascript(在此讨论:stackoverflow.com/questions/28070463/…)。但这就是 node.js,其中 JS 在服务器上执行,并且永远无法通过浏览器访问密钥文件。
  • @EikePierstorff 您仍然需要与我联系,以便我们讨论这个问题。但我仍然说它违反使用条款。任何人都可以访问您的数据。如果谷歌认为它是安全的,他们会记录下来,他们并没有让我认为这是一个坏主意。
  • @DaImTo,我绝对不认为这是一个好主意,我只是指出有人声称已经这样做了(我有时怕我有点笨,但我偶尔想出一个有用的答案来弥补它)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 2019-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多