PHP Google AnalyticsAPI授权错误

时间:2015-04-13 19:16:13

标签: php rest google-analytics oauth-2.0 google-analytics-api

我想通过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中改变了这个链接。

1 个答案:

答案 0 :(得分:1)

关键错误是:

  

(403)用户没有任何Google Analytics帐户

您正在使用服务帐户登录。您需要授予服务帐户访问您的Google分析帐户的权限。

解决方案:

转到google analytics网站。在管理部分,使用服务帐户电子邮件地址添加新用户,在帐户级,必须是帐户级,只为该新用户提供只读的访问权限。它真的需要它。

然后再次尝试你的脚本。