2012-03-29 4 views
12

Sto sviluppando un'applicazione che consente agli utenti di vedere i miei dati di Google Analytics utilizzando l'API di Google v3. Tutto ciò che ho cercato sembra indicare che gli utenti devono accedere ai loro account Google e concedere l'accesso alla mia app prima che io possa iniziare a interrogare l'API; tuttavia, non è quello che voglio, ho solo bisogno che i miei utenti vedano i miei dati di Analytics. Come posso autorizzare l'API ad accedere ai miei dati. Ho l'ID cliente e il segreto client, ma l'OAuth implementato dall'API di Google v3 richiede un token di autorizzazione, che può essere ottenuto solo facendo in modo che l'utente acceda al suo account google (giusto?) un modo per accedere al mio account Google Analytics e visualizzare tali informazioni agli utenti?Autorizzazione dell'API di Google Analytics v3 per consentire l'accesso ai miei dati

+3

ho avuto la stessa identica ques zione ... Hai trovato una risposta? – lpdahito

+0

hai trovato una risposta per questo? –

risposta

2

È possibile utilizzare un refresh token per l'accesso offline. Una volta ottenuto il numero refresh token, è possibile salvarlo in un file o database e utilizzarlo per accedere ai dati senza un reindirizzamento dell'autorizzazione.

Vedere Using a Refresh Token nella documentazione.

vedi anche: How can we access specific Google Analytics account data using API?

+0

Penso che per una soluzione più robusta dovresti andare con la risposta all'account del servizio – mattl

+0

@mattl Non penso che questo sia un motivo per non votare. La risposta non è sbagliata, è solo una delle opzioni offerte da Google. –

+0

Hai ragione, mi dispiace. Non posso cambiarlo ora come è stato più di 20 ore. Potrebbe qualcun altro revocare nuovamente. – mattl

10

Credo che ciò che si vuole fare è impostare un account Servizio: https://developers.google.com/analytics/devguides/config/mgmt/v3/mgmtAuthorization

"Utile per automatizzato/offline/accesso programmato ai dati di Google Analytics per per esempio, per creare un dashboard in tempo reale dei tuoi dati di Google Analytics e condividerlo con altri utenti

Ci sono alcuni passaggi necessari per Consente di configurare gli account di servizio affinché funzionino con Google Analytics:

  1. Registrare un progetto nella console delle API.
  2. Nella Console API di Google, nel riquadro Accesso API, creare un ID client con il Tipo di applicazione impostato su Account servizio.
  3. Accedi a Google Analytics e vai alla sezione Amministrazione.
  4. Selezionare l'account per il quale si desidera che l'applicazione abbia accesso a .
  5. Aggiungere l'indirizzo di posta elettronica, dall'ID cliente creato nella console delle API dal passaggio 2, come utente dell'account selezionato di Google Analytics .
  6. seguire le istruzioni per account di servizio per accedere ai dati di Google Analytics: https://developers.google.com/accounts/docs/OAuth2ServiceAccount "
0

Ecco segnalazione di un pieno di Google Analytics esempio di implementazione con account di servizio tra cui le note di impostazione Appena ha scritto dopo aver letto la tua domanda, io. aveva lo stesso problema.

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

codice con più documentazione a https://gist.github.com/fulldecent/6728257

+0

Questo codice funziona per me ... I nomi delle classi sono cambiati da Google_AssertionCredientials => Google_Auth_AssertionCredentials e Google_AnalyticsService => Google_Service_Analytics – Graben

+0

Grazie, le modifiche apportate –