Как получить доступ к API Google Analytics из фоновой службы на стороне сервера?


Я хотел бы получать данные из google analytics в собственную базу данных с помощью фонового задания cron без необходимости каждый раз проходить аутентификацию пользователя.

Я знаю , как получить маркер доступа Google Analytics OAuth при взаимодействии с пользователем, как я просил ранее. Использование OAuth не будет работать, так как это требует взаимодействия с пользователем. В соответствии с Ссылкой на API Google Analytics OAuth, а также маркер доступа могут использоваться для доступа к статистике страницы один раз в база сеансов. Однако я ищу постоянный способ реализовать это в фоновом режиме.

Как я могу получить доступ к Google Analytics без аутентификации пользователя или получить токен доступа с истекающим сроком действия?

Author: Community, 2014-10-28

1 answers

Предполагая, что данная учетная запись является вашей собственной, вы можете создать учетную запись службы . Убедитесь, что вы предоставили учетной записи службы доступ для чтения адреса электронной почты на уровне учетной записи к учетной записи Google Analytics, и она сможет считывать ваши данные.

<?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.
  The Key file should be placed in a location
  that is not accessable from the web. outside of 
  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 = '1046123799103-nk421gjc2v8mlr2qnmmqaak04ntb1dbp.apps.googleusercontent.com';
$Email_address = '1046123799103-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>
<?php

?>

Код, вырванный из учебника Учетная запись службы Google с PHP

Если это не ваша учетная запись, то вы можете использовать обычный метод Oauth2, попросите использовать для аутентификации вас один раз, а затем с помощью токена обновления вы сможет получить доступ к данным. Используя код из вашего предыдущего вопроса.

 4
Author: DaImTo, 2014-10-28 10:09:52