我是使用Google AnalyticsAPI的新手,我遇到了问题。 我收到标记为(403)的错误用户没有任何Google Analytics帐户。 使用我的谷歌帐户,我可以查看谷歌anaytics页面和代码,我不能。
这是我的代码。我想我在第一行中误用了一些东西,但是什么呢? 任何想法都受到欢迎。
$scope = "https://www.googleapis.com/auth/analytics";
$client_id = "[12 numbers]-[32 letters/numbers].apps.googleusercontent.com";
$service_account_name = "[same 12 numbers]-[same 32 letters/numbers] @developer.gserviceaccount.com";
$key_file_location = "./google-account-service.p12";
$projectId = "[same 12 numbers]";
$projectName = "[my project name defined in console.developers.google.com]";
$client = new Google_Client();
$client->setApplicationName($projectName);
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials($service_account_name, array($scope), $key);
$client->setAssertionCredentials($cred);
if($client->getAuth()->isAccessTokenExpired()){
$client->getAuth()->refreshTokenWithAssertion($cred);
}
$client->getAccessToken();
$service = new Google_Service_Analytics($client);
// metrics
$_params[] = 'date';
$_params[] = 'date_year';
$_params[] = 'date_month';
$_params[] = 'date_day';
// dimensions
$_params[] = 'visits';
$_params[] = 'pageviews';
$_params[] = 'bounces';
$_params[] = 'entrance_bounce_rate';
$_params[] = 'visit_bounce_rate';
$_params[] = 'avg_time_on_site';
$from = date('Y-m-d', time()-2*24*60*60); // 2 days
$to = date('Y-m-d'); // today
$metrics = 'ga:visits,ga:pageviews,ga:bounces,ga:entranceBounceRate,ga:visitBounceRate,ga:avgTimeOnSite';
$dimensions = 'ga:date,ga:year,ga:month,ga:day';
$data = $service->data_ga->get('ga:'.$projectId, $from, $to, $metrics, array('dimensions' => $dimensions));
foreach($data['rows'] as $row) {
$dataRow = array();
foreach($_params as $colNr => $column) echo $column . ': '.$row[$colNr].', ';
}
答案 0 :(得分:0)
您使用的服务帐户邮件无效。您需要在console.developers.google.com中创建项目并激活goi for analytics的api。那么您将获得访问您的服务帐户电子邮件在您的代码中使用它。
答案 1 :(得分:0)
只是我在你的代码中注意到的一个提示你设置$ projectid =前面的12个数字,就像我知道错误一样.. $ projectid必须等于(转到你的谷歌分析帐户) ,看一下你会注意到的网址是一个看起来像/ a39569200w68518820p70543179的网址/在这种情况下输入的字母后面的数字是70543179,并将它们设置为$ projectid变量的值我不知道它是否解决了你的问题,但我认为你应该知道..