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

我从文档中了解到,验证和使用核心API有两种选择:
如果我正确理解OAuth2的机制,那么在我的场景中这不是一个选项,因为我无法指定回调URL.我想到了Hacky解决方案 - 比如建立一个从浏览器直接连接到GA的Web配置文件身份验证,然后通过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]
Run Code Online (Sandbox Code Playgroud)
响应:
{
error: {
errors: [
{
domain: "global",
reason: "required",
message: "Login Required",
locationType: "header",
location: "Authorization"
}
],
code: 401,
message: "Login Required"
}
}
Run Code Online (Sandbox Code Playgroud)
虽然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);
Run Code Online (Sandbox Code Playgroud)
要获得一些数据:
$analytics->data_ga->get(PROFILE_ID, $date_from, $date_to, $metrics, $optParams)
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请查看api文档.另外,要小心,有一个查询上限(除非你支付)