Google PHP 后端中的分析 API

Google Analytics API in PHP backend

所以我想在自定义 PHP 后端显示 GA 图表。所以我在 https://console.developers.google.com/ 中创建了 APP,但我不知道如何在不要求用户登录的情况下访问 我自己的 google 分析数据。现在我有简单的代码:

  $client = new Google_Client();
  $client->setApplicationName("App Name");
  $client->setClientId(CLIENT_ID);
  $client->setClientSecret(CLIENT_SECRET);
  $client->setDeveloperKey(APP_ID);
  $client->setScopes(array('https://www.googleapis.com/auth/analytics.readonly'));
  $client->authenticate();
  $token = $client->getAccessToken();
  $service = new Google_Service_Analytics($client);
$optParams = array(
      'sort' => 'ga:pageviews',
      'max-results' => '5');
$results = $service->data_ga->get(
       'ga:123456',
       '2015-01-01',
       '2015-01-30',
       'ga:pagePath',
       $optParams);

print_r($results);

我想我做错了:),所以我的问题是,如何允许任何人通过 PHP 脚本访问我自己的 google 分析数据?

如果您想访问自己的帐户,那么我建议您考虑使用 service account

Google 开发者控制台 上创建 service account 后,记得转到 Google Analytics 帐户,并在帐户级别授予服务帐户电子邮件地址访问您的 Google Analytics 数据的权限。您可以在此处阅读有关如何执行此操作的信息 Google 服务帐户 PHP 从该教程中提取的代码。

session_start();        
require_once 'Google/Client.php';
require_once 'Google/Service/Analytics.php';        
/************************************************   
 The following 3 values an befound in the setting   
 for the application you created on Google      
 Developers console.         Developers console.
 The Key file should be placed in a location     
 that is not accessable from the web. outside of 
 web root.       web root.

 In order to access your GA account you must    
 Add the Email address as a user at the     
 ACCOUNT Level in the GA admin.         
 ************************************************/
$client_id = 'xxx-nk421gjc2v8mlr2qnmmqaak04ntb1dbp.apps.googleusercontent.com';
$Email_address = 'xxx-nk421gjc2v8mlr2qnmmqaak04ntb1dbp@developer.gserviceaccount.com';   
$key_file_location = '629751513db09cd21a941399389f33e5abd633c9-privatekey.p12';     
$client = new Google_Client();      
$client->setApplicationName("Client_Library_Examples");
$key = file_get_contents($key_file_location);    
// seproate additional scopes with a comma   
$scopes ="https://www.googleapis.com/auth/analytics.readonly";  
$cred = new Google_Auth_AssertionCredentials(    
 $Email_address,         
 array($scopes),        
 $key        
 );     
$client->setAssertionCredentials($cred);
if($client->getAuth()->isAccessTokenExpired()) {        
 $client->getAuth()->refreshTokenWithAssertion($cred);      
}       
$service = new Google_Service_Analytics($client);
$accounts = $service->management_accountSummaries->listManagementAccountSummaries();
//calulating start date  
$date = new DateTime(date("Y-m-d"));     
$date->sub(new DateInterval('P10D'));    
//Adding Dimensions
$params = array('dimensions' => 'ga:userType'); 
// requesting the data  
$data = $service->data_ga->get("ga:78110423", $date->format('Y-m-d'), date("Y-m-d"), "ga:users,ga:sessions", $params );  
?><html>     
<?php echo $date->format('Y-m-d') . " - ".date("Y-m-d"). "\n";?>    
<table>  
<tr>     
<?php    
//Printing column headers
foreach($data->getColumnHeaders() as $header){
 print "<td>".$header['name']."</td>";      
}       
?>      
</tr>       
<?php       
//printing each row.
foreach ($data->getRows() as $row) {        
 print "<tr><td>".$row[0]."</td><td>".$row[1]."</td><td>".$row[2]."</td></tr>";      
}    
//printing the total number of rows
?>      
<tr><td colspan="2">Rows Returned <?php print $data->getTotalResults();?> </td></tr>     
</table>     
</html>