我想通过Google AnalyticsAPI为我的网站获取Google Analytics数据。 首先,我去了开发人员控制台,我启用了Analytics API,然后在凭据部分我创建了新的ClientID(服务帐户)。
现在,这是我的代码
include "assets/src/templates/base.php";
require_once 'assets/src/Google/autoload.php';
$client_id = 'xxx.apps.googleusercontent.com'; //Client ID
$service_account_name = 'yyy@developer.gserviceaccount.com'; //Email Address
$key_file_location = 'zzz/key.p12'; //key.p12
echo pageHeader("Service Account Access");
if (strpos($client_id, "googleusercontent") == false
|| !strlen($service_account_name)
|| !strlen($key_file_location)) {
echo missingServiceAccountDetailsWarning();
exit;
}
$client = new Google_Client();
$client->setApplicationName("app");
$service = new Google_Service_Analytics($client);
if (isset($_SESSION['service_token'])) {
$client->setAccessToken($_SESSION['service_token']);
}
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
$service_account_name,
array('https://www.googleapis.com/auth/analytics.readonly'),
$key
);
$client->setAssertionCredentials($cred);
if ($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
$_SESSION['service_token'] = $client->getAccessToken();
$result = $service->data_ga->get(
'ga:AAA',
'2015-03-03',
'2015-03-03',
'ga:sessions');
?>
其中AAA是我的ViewID。 所以,我的问题是这样的:当我在服务器上访问这个脚本时,它说了
*"致命错误:未捕获的异常' Google_Service_Exception'有消息'错误调用GET https://www.googleapis.com/analytics/v3/data/ga?ids=ga%3A91249839&start-date=2015-03-03&end-date=2015-03-03&metrics=ga%3Asessions: (403)用户没有任何Google Analytics帐户。'在 C:\ xampp \ htdocs \ test \ assets \ src \ Google \ Http \ REST.php:110堆栈跟踪:
0 C:\ xampp \ htdocs \ test \ assets \ src \ Google \ Http \ REST.php(62):Google_Http_REST :: decodeHttpResponse(Object(Google_Http_Request),
对象(Google_Client))#1 [内部函数]: Google_Http_REST :: doExecute(对象(Google_Client) 对象(Google_Http_Request))#2 C:\ XAMPP \ htdocs中\测试\资产的\ src \谷歌\工作\ Runner.php(174): call_user_func_array(Array,Array)#3 C:\ XAMPP \ htdocs中\测试\资产\ SRC \谷歌\ HTTP \ REST.php(46): Google_Task_Runner-> run()#4 C:\ XAMPP \ htdocs中\测试\资产的\ src \谷歌\ Client.php(590): Google_Http_REST ::执行(对象(Google_Client) 对象(Google_Http_Request))#5 C:\ XAMPP \ htdocs中\测试\资产的\ src \谷歌\服务\ Resource.php(231): Google_Client->执行(对象(Google_Htt in。) 第110行" *
的C:\ xampp \ htdocs \ test \ assets \ src \ Google \ Http \ REST.php
有什么建议吗?
提前谢谢!
此致 golobich
编辑:我已经尝试过Google Books api,auth工作正常。 (我在$ cred ofcourse中改变了这个链接。
答案 0 :(得分:1)
关键错误是:
(403)用户没有任何Google Analytics帐户
您正在使用服务帐户登录。您需要授予服务帐户访问您的Google分析帐户的权限。
解决方案:
转到google analytics网站。在管理部分,使用服务帐户电子邮件地址添加新用户,在帐户级,必须是帐户级,只为该新用户提供只读的访问权限。它真的需要它。
然后再次尝试你的脚本。