1

мне удалось получить информацию от «точки зрения» с помощью PHP в аналитике Google, однако она работает только тогда, когда я аутентификацию с учетной записью Google, в противном случае он отображает следующее сообщение об ошибке:Доступ к Google Analytics API withouth аутентификации

«Неустранимая ошибка: исключить исключение« Google_Service_Exception »с сообщением« Ошибка при вызове POST https://analyticsreporting.googleapis.com/v4/reports:batchGet: (403) У пользователя нет достаточных разрешений для этого профиля. '"

Что мне нужно в основном - найти способ получения" представления info "без аутентификации, так как у меня есть пользовательские cms, и мне нужно показать эту информацию в разделе admin cms

Вот мой код:

<?php 
session_start(); 
require_once 'google-api-php-client/src/Google/autoload.php'; 

$client = new Google_Client(); 
$client->setAuthConfigFile('pathToFile.json'); 
$client->addScope(Google_Service_Analytics::ANALYTICS_READONLY); 

// If the user has already authorized this app then get an access token 
// else redirect to ask the user to authorize access to Google Analytics. 
if (isset($_SESSION['access_token']) && $_SESSION['access_token']) { 
    // Set the access token on the client. 
    $client->setAccessToken($_SESSION['access_token']); 

    // Create an authorized analytics service object. 
    $analytics = new Google_Service_AnalyticsReporting($client); 

    // Call the Analytics Reporting API V4. 
    $response = getReport($analytics); 

    // Print the response. 
    $info = printResults($response); 

} else { 
    $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/api/oauth2callback.php'; 
    header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL)); 
} 


function getReport(&$analytics) { 

    // Replace with your view ID. E.g., XXXX. 
    $VIEW_ID = "VIEW_ID_NUMBER"; 

    // Create the DateRange object. 
    $dateRange = new Google_Service_AnalyticsReporting_DateRange(); 
    $dateRange->setStartDate("2016-01-01"); 
    $dateRange->setEndDate("today"); 

    // Create the Metrics object. 
    $sessions = new Google_Service_AnalyticsReporting_Metric(); 
    $sessions->setExpression("ga:goalCompletionsAll"); 
    $sessions->setAlias("objetivos"); 

    //Create the Dimensions object. 
    $medium = new Google_Service_Analyticsreporting_Dimension(); 
    $medium->setName("ga:medium"); 

    $minute = new Google_Service_Analyticsreporting_Dimension(); 
    $minute->setName("ga:minute"); 

    $hour = new Google_Service_Analyticsreporting_Dimension(); 
    $hour->setName("ga:hour"); 

    $date = new Google_Service_Analyticsreporting_Dimension(); 
    $date->setName("ga:date"); 

    $day = new Google_Service_Analyticsreporting_Dimension(); 
    $day->setName("ga:day"); 

    $goals = new Google_Service_Analyticsreporting_Metric(); 
    $goals->setExpression("ga:goalStartsAll"); 

    // Create the ReportRequest object. 
    $request = new Google_Service_AnalyticsReporting_ReportRequest(); 
    $request->setViewId($VIEW_ID); 
    $request->setDateRanges($dateRange); 
    $request->setDimensions(array($medium, $date, $hour, $minute)); 
    $request->setMetrics(array($sessions, $goals)); 

    $body = new Google_Service_AnalyticsReporting_GetReportsRequest(); 
    $body->setReportRequests(array($request)); 
    return $analytics->reports->batchGet($body); 
} 


?> 

любая информация по этому вопросу очень ценится. thanks

+1

Итак, вы хотите получить доступ к данным, защищенным паролем, без входа в систему? Вы действительно ожидаете какой-либо помощи здесь?Если вы не хотите показывать данные в cms, вам нужно войти в систему (или тот, кто владеет учетной записью). Для Google Analytics существует javascript API: https://developers.google.com/analytics/devguides/reporting/embed/v1/ Возможно, это поможет. – Seb

+0

@Seb жаль, что я не объяснил себя правильно. Мне нужно получить информацию без необходимости входа в учетную запись google, если ее можно отправить учетные данные через php или что-то в этом роде. –

+1

@SolarConfinement Пожалуйста, прочитайте документацию Google OAuth 2.0 для этого же. https://developers.google.com/identity/protocols/OAuth2 – dikesh

ответ

1

Чтобы получить информацию о GA, вам необходимо пройти аутентификацию самостоятельно. Если вы не хотите использовать путь аутентификации во всплывающих окнах, вы можете использовать «ключ p12», чтобы обойти эту проблему. Файлы p12 необходимо присоединить к вашему запросу, и нет необходимости регистрироваться (это решение для серверного приложения), но это работает только с вашими собственными данными, поэтому владелец ключа p12 должен иметь доступ. желаемый счет

https://developers.google.com/analytics/devguides/reporting/core/v4/authorization

Проверьте это, чтобы узнать, как получить p12 https://webapps.stackexchange.com/questions/58411/how-where-to-obtain-a-p12-key-file-from-the-google-developers-console

1

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

Создание учетной записи службы и ключ

В Google API Console (https://console.developers.google.com/), перейдите к мандатной вкладку. Под Создайте учетные данные, выберите Ключ учетной записи службы. Выберите хорошее имя и под Роль Я выбрал Проект -> просмотрщик, который я могу подтвердить для работы. Под Тип ключа, выберите JSON и нажмите Создать кнопку. Файл JSON загружается в вашу систему, который следует искать после, так как это единственная копия. Вы не можете загрузить его позже, поэтому потеря его сделает эту учетную запись бесполезной.

Дайте доступ к учетной записи к данным Google Analytics Просмотр по

Файл JSON содержит аккаунт Google (адрес электронной почты, заканчивающийся iam.gserviceaccount.com). Скопируйте этот адрес электронной почты и дайте ему Прочитайте и проанализируйте разрешения на странице Google Analytics , к которой вы хотите иметь доступ.