Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Google Analytics API授权错误_Php_Rest_Google Analytics_Oauth 2.0_Google Analytics Api - Fatal编程技术网

PHP Google Analytics API授权错误

PHP Google Analytics API授权错误,php,rest,google-analytics,oauth-2.0,google-analytics-api,Php,Rest,Google Analytics,Oauth 2.0,Google Analytics Api,我想通过谷歌分析API获取我网站的谷歌分析数据。 首先,我进入开发者控制台,启用了AnalyticsAPI,然后在凭证部分创建了新的ClientID(服务帐户) 现在,这是我的代码 include "assets/src/templates/base.php"; require_once 'assets/src/Google/autoload.php'; $client_id = 'xxx.apps.googleusercontent.com'; //Client ID $service_a

我想通过谷歌分析API获取我网站的谷歌分析数据。 首先,我进入开发者控制台,启用了AnalyticsAPI,然后在凭证部分创建了新的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是我的视图ID。 所以,我的问题是:当我在服务器上访问这个脚本时,它会显示

*“致命错误:未捕获异常‘Google_Service_exception’,消息为‘调用GET时出错’。” : (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\u Http\u REST::decodeHttpResponse(对象(Google\u Http\u请求), 对象(Google#u客户端))#1[内部函数]: Google_Http_REST::doExecute(对象(Google_客户端), 对象(Google_Http_请求))#2 C:\xampp\htdocs\test\assets\src\Google\Task\Runner.php(174): 调用_user_func_数组(数组,数组)#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(对象(Google_客户端), 对象(Google_Http_请求))#5 C:\xampp\htdocs\test\assets\src\Google\Service\Resource.php(231): Google\u客户端->执行(对象)(Google\u Htt在 C:\xampp\htdocs\test\assets\src\Google\Http\REST.php,第110行“*

有什么建议吗

提前谢谢你

问候,, 戈洛比奇

编辑:我已经尝试过Google Books api,auth工作正常。(我当然在$cred中更改了该链接。

关键错误是:

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

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

解决方案:

转到google analytics网站。在管理部分,使用服务帐户电子邮件地址添加一个新用户,在帐户级别它必须是帐户级别只给这个新用户阅读权限,这是它真正需要的


然后再试试你的脚本。

很有魅力!谢谢!:)