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

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

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

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

4

Решение

Предполагая, что рассматриваемая учетная запись является вашей собственной, вы можете нам учетная запись службы. Убедитесь, что вы предоставляете адрес электронной почты учетной записи службы для чтения на уровне учетной записи для учетной записи 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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]