PHP Google 分析 API 授权错误

PHP Google Analytics API Authorization error

我想通过 Google Analytics API 为我的网站获取 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。 所以,我的问题是:当我在服务器上访问这个脚本时,它说

*"Fatal error: Uncaught exception 'Google_Service_Exception' with message 'Error calling 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) User does not have any Google Analytics account.' in C:\xampp\htdocs\test\assets\src\Google\Http\REST.php:110 Stack trace:

0 C:\xampp\htdocs\test\assets\src\Google\Http\REST.php(62): Google_Http_REST::decodeHttpResponse(Object(Google_Http_Request),

Object(Google_Client)) #1 [internal function]: Google_Http_REST::doExecute(Object(Google_Client), Object(Google_Http_Request)) #2 C:\xampp\htdocs\test\assets\src\Google\Task\Runner.php(174): call_user_func_array(Array, Array) #3 C:\xampp\htdocs\test\assets\src\Google\Http\REST.php(46): Google_Task_Runner->run() #4 C:\xampp\htdocs\test\assets\src\Google\Client.php(590): Google_Http_REST::execute(Object(Google_Client), Object(Google_Http_Request)) #5 C:\xampp\htdocs\test\assets\src\Google\Service\Resource.php(231): Google_Client->execute(Object(Google_Htt in C:\xampp\htdocs\test\assets\src\Google\Http\REST.php on line 110"*

有什么建议吗?

提前致谢!

此致, 戈洛比奇

编辑:我试过 Google 书籍 api 并且 auth 工作正常。 (我已经在 $cred ofcourse 中更改了 link。

关键错误是这样的:

(403) User does not have any Google Analytics account

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

解决方案:

转到 google 分析网站。在管理部分使用服务帐户电子邮件地址添加新用户,在 ACCOUNT LEVEL 必须是 ACCOUNT LEVEL 给这个新用户阅读仅访问它真正需要的一切。

然后再次尝试您的脚本。