Я бы хотел получить данные из Google Analytics в собственную базу данных с помощью задания фона cron, без необходимости аутентификации пользователя каждый раз.
Я знаю, как получить токен доступа к Google Analytics OAuth с пользовательским взаимодействием, как я уже говорил ранее. Использование OAuth не будет работать, поскольку для этого требуется взаимодействие с пользователем. В соответствии с API-интерфейсом API Google Analytics OAuth, а также токеном доступа можно использовать для доступа к статистике страницы один раз в каждой сессии. Однако я ищу постоянный способ реализовать это в фоновом режиме.
Как я могу получить доступ к аналитике Google без проверки подлинности пользователя или получить недействующий токен доступа?
Предполагая, что учетная запись, о которой идет речь, является вашей собственной, вы можете получить учетную запись службы . Убедитесь, что вы предоставили доступ к электронной почте для доступа к учетной записи службы на уровне аккаунта в учетную запись 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("Ymd")); $date->sub(new DateInterval('P10D')); //Adding Dimensions $params = array('dimensions' => 'ga:userType'); // requesting the data $data = $service->data_ga->get("ga:78110423", $date->format('Ym-d'), date("Ymd"), "ga:users,ga:sessions", $params ); ?><html> <?php echo $date->format('Ym-d') . " - ".date("Ymd"). "\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, попросив использовать для аутентификации вас один раз, а затем с помощью токена обновления вы сможете получить доступ к данным. Использование кода из предыдущего вопроса.