2012-03-29 20 views
12

Pracuję nad aplikacją, która umożliwia użytkownikom przeglądanie moich własnych danych Google Analytics za pomocą Google API v3. Wszystko, co badałem, zdaje się wskazywać, że użytkownicy muszą zalogować się na swoje konta Google i przyznać mojej aplikacji dostęp, zanim zacznę wysyłać zapytania do interfejsu API; Jednak to nie jest to, czego chcę, po prostu potrzebuję moich użytkowników, aby zobaczyli moje własne dane Analytics. W jaki sposób można autoryzować interfejs API do uzyskiwania dostępu do moich danych. Mam identyfikator klienta i tajny klucz klienta, ale OAuth zaimplementowany przez API Google v3 pyta o token autoryzacji, który można uzyskać tylko poprzez pobranie loginu na swoje konto Google (czy tak?) Czy istnieje sposób na zalogowanie się na własne konto Google Analytics i wyświetlenie tych informacji użytkownikom?Google Analytics API v3 autoryzacja zezwalająca na dostęp do moich danych

+3

mam dokładnie taką samą odpowiedzi na pytania odpowiedź ... Czy znalazłeś odpowiedź? – lpdahito

+0

znalazłeś odpowiedź na to pytanie? –

Odpowiedz

2

Możesz użyć refresh token do dostępu w trybie offline. Po uzyskaniu numeru refresh token można go zapisać w pliku lub bazie danych i użyć go do uzyskania dostępu do danych bez przekierowania autoryzacji.

Zobacz w dokumentach Using a Refresh Token.

zobacz także: How can we access specific Google Analytics account data using API?

+0

Myślę, że dla bardziej niezawodnego rozwiązania powinieneś pójść z kontem usługi, aby odpowiedzieć na – mattl

+0

@mattl Nie sądzę, że jest to powód do odrzucenia głosowania. Odpowiedź nie jest zła, to tylko jedna z opcji, które oferuje Google. –

+0

Masz rację, przepraszam. Nie mogę tego zmienić teraz, ponieważ minęło ponad 20 godzin. Czy ktoś mógłby znowu się uporać? – mattl

10

wierzę, co chcesz zrobić, to założyć konto Obsługi: https://developers.google.com/analytics/devguides/config/mgmt/v3/mgmtAuthorization

„użyteczne dla zautomatyzowanego/offline/zaplanowanego dostępu do danych Google Analytics dla własne konto, na przykład, aby utworzyć pulpit nawigacyjny zawierający własne dane Google Analytics i udostępnić go innym użytkownikom. powinieneś skonfigurować konta usług do pracy z Google Analytics:

  1. Zarejestruj projekt w konsoli API.
  2. W konsoli Google APIs w panelu dostępu do interfejsu API utwórz identyfikator klienta o numerze , a typ aplikacji jest ustawiony na konto usługi.
  3. Zaloguj się do Google Analytics i przejdź do sekcji Administracja.
  4. Wybierz konto, dla którego aplikacja ma mieć dostęp pod numerem .
  5. Dodaj adres e-mail z identyfikatora klienta utworzonego w interfejsie API Konsola z kroku 2, jako użytkownik wybranego konta Google Analytics .
  6. Postępuj zgodnie z instrukcjami dotyczącymi kont usług dostępu do danych Google Analytics: https://developers.google.com/accounts/docs/OAuth2ServiceAccount "
0

Oto raportowania pełny Google Analytics przykładową implementację z tytułu usług, w tym notatek konfiguracji Właśnie napisałem go po przeczytaniu swoje pytanie, ja. miał ten sam problem.

<?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>';   
    } 
} 
?> 

Kod z większą dokumentacji na https://gist.github.com/fulldecent/6728257

+0

Ten kod działa dla mnie ... Nazwy klas zmieniły się od Google_AssertionCredientials => Google_Auth_AssertionCredentials i Google_AnalyticsService => Google_Service_Analytics – Graben

+0

Dziękuję, zmiany wprowadzone –

Powiązane problemy