微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 从本地服务器请求Google Analytics数据

我想编写一个从GA导入Web统计数据的 PHP脚本.该脚本可通过Web前端访问(用于触发导入)并驻留在本地服务器(127.0.0.1)上.

我从文档中了解到,验证和使用核心API有两种选择:

> API密钥 – 仅授予对统计信息的访问权限
> OAuth2 – 完全授权

如果我正确理解OAuth2的机制,那么在我的场景中这不是一个选项,因为我无法指定回调URL.哈克的解决方案来我的心 – 就像直接建立的Web Profile认证从浏览器连接到GA,然后由JavaScript获取数据并将其进料导入脚本 – 但我宁愿从这样的解决方案,不要.另外,因为触发导入过程的浏览器交互将来可能会被cron作业替换.

API密钥似乎正是我想要的,但来自浏览器的GET请求失败.

GET请求:

https://www.googleapis.com/analytics/v3/data/ga
  ?ids=ga:[profile ID]
  &start-date=2013-01-01&end-date=2013-01-05
  &metrics=ga:visits
  &key=[the API key]

响应:

{
  error: {
  errors: [
    {
      domain: "global",reason: "required",message: "Login required",locationType: "header",location: "Authorization"
    }
  ],code: 401,message: "Login required"
  }
}

虽然URL应该没问题.除了关键参数外,它与http://ga-dev-tools.appspot.com/explorer/生成的关键参数相同,也是有效的(在这种情况下使用AOuth2). API密钥是新鲜的.

然后再次生成一个新的API密钥使我面临下一个不便之处,即显然密钥仅在一天内有效.

所以在一天结束时我的问题是:

是否可以在上述方案中获取数据,而无需每天手动进行身份验证或生成API密钥?

如前所述,使用此库: https://code.google.com/p/google-api-php-client/
但是,不是使用oauth,而是从api控制台创建服务帐户(只需选择服务器应用程序).这将为您提供客户端ID,标识服务帐户的电子邮件以及包含私钥的* .p12文件.

然后,您必须以管理员用户的身份将服务帐户(电子邮件)添加到分析中,以获取所需的数据.

要使用该服务:

$client = new Google_Client();
$client->setApplicationName('test');

$client->setAssertionCredentials(
    new Google_AssertionCredentials(
        EMAIL,array('https://www.googleapis.com/auth/analytics.readonly'),file_get_contents(PRIVATE_KEY_FILEPATH)
    )
);
$client->setClientId(CLIENT_ID);
$client->setAccesstype('offline_access');

$analytics = new Google_AnalyticsService($client);

要获得一些数据:

$analytics->data_ga->get(PROFILE_ID,$date_from,$date_to,$metrics,$optParams)

有关详细信息,请查看api文档.另外,要小心,有一个查询上限(除非你支付)

原文地址:https://www.jb51.cc/php/136754.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐