Можно ли получить количество текущих посещений по ссылке из GA?

У меня есть дашборд, CMS, и клиент хочет видеть текущее количество просмотров десятков ссылок. Итак, мне было интересно, могу ли я получить это из Google Analytics. Я отправляю запрос со ссылками, ГА возвращает только число и каждый пользователь должен видеть эти числа, даже если он не является админом на ГА для этой самой страницы.

Заранее спасибо.


person Korovjov    schedule 10.12.2018    source источник


Ответы (2)


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

Думайте об учетной записи службы как о фиктивном пользователе, у нее есть собственная учетная запись Google Диска, учетная запись календаря Google, а также учетная запись Google Analytics. Отличительной особенностью учетных записей служб является то, что они могут быть предварительно авторизованы для предоставления им доступа к данным. Взяв адрес электронной почты учетной записи службы и добавив его в качестве пользователя в раздел администратора Google Analytics, он получит доступ к этим данным без необходимости входа в систему.

Еще одна вещь, которую вам нужно будет учитывать, - это квота, которую вы можете сделать максимум 10 000 запросов данных для одного представления с вашим приложением, это нельзя увеличить, поэтому я рекомендую вам как-то кэшировать эти данные.

person DaImTo    schedule 10.12.2018
comment
Спасибо, это было действительно полезно. Я думаю, что я бы сделал свою собственную аналитику, чем. :D - person Korovjov; 10.12.2018
comment
Вы можете сделать это с GA, не поймите меня неправильно, но квота усложняет задачу. - person DaImTo; 10.12.2018

Итак, для тех, у кого такая же/похожая проблема:

  1. Проверьте эту ссылку: Как получить доступ к данным Google Analytics в задании cron без входа в систему?
  2. Создайте файл .p12, связанный с учетной записью службы, которую вы создали в процессе.
  3. Вы меняете параметры, чтобы вы могли получить в реальном времени

Вы можете проверить мой код для справки (это был только тестовый код):

 require_once 'Google/autoload.php';
   session_start();
/************************************************
 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 = '[your_service_account_id]';
    $Email_address = '[your_service_email_account]';
    $key_file_location = '[.p12_file_location]'
    $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);



    //Adding Dimensions
    $params = array('dimensions' => 'rt:medium');
    // requesting the data
    $results = $service->data_realtime->get(
      'ga:[your_view_id]',
      'rt:activeUsers',
      $params);
?>

<html>
    <table border="1">
        <tr>
        <?php
        //Printing column headers
        foreach($results->getColumnHeaders() as $header){
             print "<td><b>".$header['name']."</b></td>";
            }
        ?>
        </tr>
        <?php
        //printing each row.
        foreach ($results->getRows() as $row) {
            print "<tr><td>".$row[0]."</td><td>".$row[1]."</td><td>".$row[2]."</td></tr>";
        }

        $totals = $results->getTotalsForAllResults();

        $html='';
        foreach ($totals as $metricName => $metricTotal) {
            $html .= "Metric Name  = $metricName\n";
            $html .= "Metric Total = $metricTotal";
        }

?>
<tr><td colspan="2">Rows Returned <?php print $results->getTotalResults();?> </td></tr>
</table>

<?php print $html; ?>
</html>
person Korovjov    schedule 07.01.2020