2012-03-29 5 views
12

Я разрабатываю приложение, которое позволяет пользователям просматривать мои собственные данные Google Analytics с помощью Google API v3. Все, что я исследовал, похоже, указывает, что пользователям необходимо войти в свои учетные записи Google и предоставить моему приложению доступ, прежде чем я могу начать запрашивать API; однако, это не то, что я хочу, мне просто нужны мои пользователи для просмотра моих собственных данных Analytics. Как разрешить API доступ к моим данным. У меня есть идентификатор клиента и клиентский секрет, но OAuth, реализованный API Google v3, запрашивает токен авторизации, который может быть получен только путем подключения пользователя к учетной записи google (правильно?) Есть ли способ войти в мою учетную запись Google Analytics и отобразить эту информацию для пользователей?Google Analytics API v3 авторизация для доступа к моим данным

+3

у меня точно такой же Ques ... Вы нашли ответ? – lpdahito

+0

Вы нашли ответ для этого? –

ответ

2

Вы можете использовать refresh token для автономного доступа. Как только вы получите refresh token, вы можете сохранить его в файле или базе данных и использовать для доступа к данным без перенаправления авторизации.

См. Using a Refresh Token в документах.

Также смотрите: How can we access specific Google Analytics account data using API?

+0

Я думаю, что для более надежного решения вы должны пойти с ответом на учетную запись службы – mattl

+0

@mattl Я не думаю, что это причина для голосования. Ответ не является неправильным, это всего лишь один из вариантов, предлагаемых Google. –

+0

Ты прав, мне очень жаль. Я не могу изменить его сейчас, поскольку прошло более 20 часов. Мог бы кто-то еще подняться снова. – mattl

10

Я считаю, что вы хотите сделать, это создать учетную запись службы: https://developers.google.com/analytics/devguides/config/mgmt/v3/mgmtAuthorization

«Полезна для автоматизированного/автономного/запланированного доступа к данным Google Analytics для например, создать собственную панель мониторинга собственных данных Google Analytics и поделиться ею с другими пользователями.

Есть несколько шагов, которые необходимо выполнить для чтобы настроить учетные записи служб для работы с Google Analytics:

  1. Зарегистрируйте проект в API-интерфейсе.
  2. В консоли API Google в области доступа API создайте идентификатор клиента с типом приложения, установленным для учетной записи службы.
  3. Войдите в Google Analytics и перейдите в раздел администратора.
  4. Выберите учетную запись, для которой приложение должно иметь доступ .
  5. Добавьте адрес электронной почты от идентификатора клиента, созданного в API-интерфейсах Консоль с шага №2, в качестве пользователя выбранной учетной записи Google Analytics .
  6. Следуйте инструкции для учетных записей служб для доступа к данным Google Analytics: https://developers.google.com/accounts/docs/OAuth2ServiceAccount "
0

Вот полный Google Analytics отчетности примера реализации с учетной записью службы, включая настройки заметки Просто написал после прочтения вашего вопроса, я. была такая же проблема.

<?php 
// Service account code from http://stackoverflow.com/questions/18258593/using-a-service-account-getaccesstoken-is-returning-null 
// Analytics code from https://code.google.com/p/google-api-php-client/source/browse/trunk/examples/analytics/simple.php?r=474 

require_once 'google-api-php-client/src/Google_Client.php'; 
require_once 'google-api-php-client/src/contrib/Google_AnalyticsService.php'; 

// Set your client id, service account name (AKA "EMAIL ADDRESS"), and the path to your private key. 
// For more information about obtaining these keys, visit: 
// https://developers.google.com/console/help/#service_accounts 
const CLIENT_ID = 'CLIENT ID'; 
const SERVICE_ACCOUNT_NAME = 'SERVICE ACCOUNT NAME (IS "EMAIL ADDRESS")'; 
const KEY_FILE = 'KEY FILE'; 
const SCOPE = 'https://www.googleapis.com/auth/analytics.readonly'; 

// OPEN GOOGLE ANALYTICS AND GRANT ACCESS TO YOUR PROFILE, THEN PASTE IN YOUR SERVICE_ACCOUNT_NAME 

$key = file_get_contents(KEY_FILE); 
$auth = new Google_Auth_AssertionCredentials(
    SERVICE_ACCOUNT_NAME, 
    array(SCOPE), 
    $key 
); 

$client = new Google_Client(); 
$client->setScopes(array(SCOPE)); 
$client->setAssertionCredentials($auth); 
$client->getAuth()->refreshTokenWithAssertion(); 
$accessToken = $client->getAccessToken(); 
$client->setClientId(CLIENT_ID); 
$service = new Google_Service_Analytics($client); 

?> 
<!DOCTYPE html> 
<html> 
    <head> 
    <title>Google Experiments Dashboard</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" media="screen"> 
    </head> 
    <body class="container"> 
    <h1>Your experiments</h1> 
    <table class="table"><tr><th><th>Experiment<th>Page<th>Started<th>Status 
<?php 
$progressClasses = array('progress-bar progress-bar-success','progress-bar progress-bar-info','progress-bar progress-bar-warning', 'progress-bar progress-bar-danger'); 
$profiles = $service->management_profiles->listManagementProfiles("~all", "~all"); 

foreach ($profiles['items'] as $profile) { 
    $experiments = $service->management_experiments->listManagementExperiments($profile['accountId'], $profile['webPropertyId'], $profile['id']); 

    foreach ($experiments['items'] as $experiment) { 
    echo "<tr>"; 
    if ($experiment['status'] == 'RUNNING') 
     echo '<td><a class="btn btn-xs btn-success"><i class="glyphicon glyphicon-ok"></i></a>'; 
    else 
     echo '<td><a class="btn btn-xs btn-danger"><i class="glyphicon glyphicon-remove"></i></a>'; 
    $expHref = "https://www.google.com/analytics/web/?pli=1#siteopt-experiment/siteopt-detail/a{$profile['accountId']}w{$experiment['internalWebPropertyId']}p{$experiment['profileId']}/%3F_r.drilldown%3Danalytics.gwoExperimentId%3A{$experiment['id']}/"; 
    echo "<td><a href='$expHref' target='_blank'>{$experiment['name']}</a>"; 
    echo "<td>{$experiment['variations'][0]['url']}"; 
    echo "<td>".date('Y-m-d',strtotime($experiment['startTime'])); 
    echo "<td>"; 

    echo '<div class="progress" style="width:400px">'; 
    foreach ($experiment['variations'] as $i => $variation) { 
     echo '<a href="'.$variation['url'].'" target="_blank"><div class="'.$progressClasses[$i].'" role="progressbar" style="width: '.(100*$variation['weight']).'%">'.$variation['name'].'</div></a>'; 
    } 
    echo '</div>';   
    } 
} 
?> 

код с дополнительной документацией на https://gist.github.com/fulldecent/6728257

+0

Этот код работает для меня ... Имена классов изменились с тех пор, как Google_AssertionCredientials => Google_Auth_AssertionCredentials и Google_AnalyticsService => Google_Service_Analytics – Graben

+0

Спасибо, внесены изменения –

Смежные вопросы