我想编写一个从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密钥使我面临下一个不便之处,即显然密钥仅在一天内有效.
所以在一天结束时我的问题是:
如前所述,使用此库:
https://code.google.com/p/google-api-php-client/
但是,不是使用oauth,而是从api控制台创建服务帐户(只需选择服务器应用程序).这将为您提供客户端ID,标识服务帐户的电子邮件以及包含私钥的* .p12文件.
原文链接:https://www.f2er.com/php/136754.html但是,不是使用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文档.另外,要小心,有一个查询上限(除非你支付)