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 给这个新用户阅读仅访问它真正需要的一切。
然后再次尝试您的脚本。
我想通过 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 给这个新用户阅读仅访问它真正需要的一切。
然后再次尝试您的脚本。