У меня есть панель управления, CMS, и клиент хочет видеть текущее количество просмотров по дюжине ссылок. Итак, мне было интересно, смогу ли я получить это из Google Analytics. Я отправляю запрос со ссылками, GA возвращает только номер, и каждый пользователь должен видеть эти номера, даже если они не являются администраторами GA для этой самой страницы.
Заранее спасибо.
Да, я знаю об этом, но когда я встраиваю его, меня сначала просят войти в систему. У моего клиента около 30 сотрудников, и ни один из них не имеет доступа к полной аналитике. Он просто хочет, чтобы они видели текущее количество посетителей и некоторые другие ссылки.
@Korovjov вот для чего нужна аутентификация сервисного аккаунта.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Основная проблема, с которой вы столкнетесь, заключается в том, что данные Google Analytics являются личными данными пользователей. Поэтому, чтобы увидеть эти данные, вы должны сначала войти в систему или каким-либо образом пройти аутентификацию. Для того, что вы думаете сделать, вам следует рассмотреть возможность использования учетной записи службы.
Думайте об учетной записи службы как о фиктивном пользователе, у нее есть собственная учетная запись Google Drive, учетная запись календаря Google, а также учетная запись Google Analytics. Самое замечательное в сервисных учетных записях заключается в том, что они могут быть предварительно авторизованы для предоставления им доступа к данным. Взяв адрес электронной почты учетной записи службы и добавив его в качестве пользователя в разделе администратора Google Analytics, он получит доступ к этим данным без необходимости входа в систему.
Еще одна вещь, которую вам нужно будет учитывать, - это квота, которую вы можете сделать максимум 10k запросов данных для одного представления с вашим приложением, это не может быть увеличено, поэтому я рекомендую вам как-то кэшировать эти данные.
Спасибо, это было действительно полезно. Думаю, я бы сделал свою аналитику, чем. : D
Вы можете сделать это с помощью GA, не поймите меня неправильно, но квота усложняет задачу.
Итак, для тех, у кого такая же / похожая проблема:
Вы можете проверить мой код для справки (это был только тестовый код):
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>