2014-05-13 10 views
6

Ho scaricato i file API da https://github.com/google/google-api-php-client e ha cercato di seguito il codice ...Come recuperare google analytics activeUsers in tempo reale in php?

$client->setApplicationName("Analytics"); 
$client->setDeveloperKey("key"); 
$service = new Google_Service_Analytics($client); 

$optParams = array(
    'dimensions' => 'rt:medium'); 

try { 
    $results = $service->data_realtime->get(
     'ga:profileid', 
     'rt:activeUsers', 
     $optParams); 
    // Success. 
} catch (apiServiceException $e) { 
    // Handle API service exceptions. 
    $error = $e->getMessage(); 
} 
print_r($results); 

mostra un errore (401) Accesso obbligatorio'

Quando ho provato la chiamata dal https://console.developers.google.com/project/apps~rational-photon-578/apiui/api/analytics/method/analytics.data.realtime.get

I ottenuto gli utenti necessari in tempo reale appartiene profileid.

Quindi, come posso implementare un processo di accesso (senza andare a google site) in questo?

Ho provato il codice qui sotto ...

$client_id    = 'xxxxxxxxxxxxxxx'; 
$service_account_name = '[email protected]'; 
$key_file_location  = 'location of .p12 keyfile'; 

$client = new Google_Client(); 
$client->setApplicationName("Client_Library_Examples"); 

if (isset($_SESSION['service_token'])) { 
$client->setAccessToken($_SESSION['service_token']); 
} 

$key = file_get_contents($key_file_location); 
$cred = new Google_Auth_AssertionCredentials(
$service_account_name, 
array('https://www.googleapis.com/auth/analytics'), 
$key 
); 

$client->setAssertionCredentials($cred); 
if($client->getAuth()->isAccessTokenExpired()) { 
$client->getAuth()->refreshTokenWithAssertion($cred); 
} 

$_SESSION['service_token'] = $client->getAccessToken(); 
echo $_SESSION['service_token']; 
$service = new Google_Service_Analytics($client); 


$optParams = array(
'dimensions' => 'rt:medium'); 


try { 
$results = $service->data_realtime->get(
    'ga:profileid', 
    'rt:activeUsers', 
    $optParams); 
// Success. 
} catch (apiServiceException $e) { 
// Handle API service exceptions. 
$error = $e->getMessage(); 
} 
print_r($results); 

Qui sto ottenendo l'access_token e dettagli ... ma il recupero dei dati di analisi non riesce a causa di un errore "l'autorizzazione Insuffient"

ho avuto la risultati quando ho fatto test da google console con l'id profilo menzionato.

risposta

2

L'accesso all'API di Google Analytics richiede l'autenticazione. Sembra che tu voglia accedere ai tuoi dati personali e non ai dati di proprietà di un altro utente. Per fare questo è necessario creare un client lib service account.

Il php su Github che si sta utilizzando, ha un esempio per l'utilizzo di un servizio di conto si può trovare service-account.php

L'esempio utilizza l'API Boooks. È possibile modificare alla analisi API di Google nel modo seguente

$service = new Google_Service_Books($client); 

modifica

$service = new Google_Service_Analytics($client); 

Se avete problemi fatemelo sapere e mi vedrete se non posso darvi un esempio completo utilizzando Google Analytics con un account di servizio.

Nota per gli altri:

Al momento di tale questione, l'API in tempo reale è ancora in fase beta è necessario richiedere l'accesso. Normalmente ci vogliono 24 ore per ottenere l'accesso.

+0

Hey grazie per la risposta .. è veramente aiutato alot :) Ora sto ottenendo un errore "Insuffient permesso "per l'accesso agli utenti in tempo reale. Ho provato sotto codice 'codice' $ optParams = array ( 'dimensions' => 'rt: medium'); try { $ risultati = $ servizio-> data_realtime-> get ( 'ga: 123123123', 'RT: activeUsers', $ optParams); // Successo. } catch (apiServiceException $ e) { // Gestisce le eccezioni del servizio API. $ error = $ e-> getMessage(); } 'code' – jpk

+0

L'API in tempo reale è ancora in beta, è necessario richiedere l'accesso. Google non ho accesso a un PC in questo momento. Normalmente ci vogliono 24 ore per ottenere l'accesso. – DaImTo

+0

Ho aggiunto l'indirizzo email (ottenuto dall'account di servizio) all'account degli utenti di analisi e ho ricevuto le autorizzazioni. Quindi ci vorranno 24 ore per ottenere l'accesso per quell'indirizzo email? – jpk

1

ho visualizzare correttamente i dati attuali dal mio conto GA al mio sito web con codice php di seguito:

<?php 

//Cloning Google API's 
//git clone https://github.com/google/google-api-php-client.git 

//Setting include_path in PHP.ini 
//include_path = ".:/usr/local's/lib/php:/path/to/google-api-php-client/src" 

//Alternatively, you can set the same ini directive dynamically in your code. 
$lib_path = $_SERVER['DOCUMENT_ROOT'] . '/path/relative/to/DOCUMENT_ROOT/'; 
set_include_path(get_include_path() . PATH_SEPARATOR . $lib_path . 'google-api-php-client/src'); 

require_once 'Google/Client.php'; 
require_once 'Google/Service/Analytics.php'; 

$keyfile = 'path/relative/to/DOCUMENT_ROOT/xxxxxxxxxxxxxxxx.p12'; // keyfile location 
$gaEmail = '[email protected]'; // email you added to GA 
$gaAuth = 'https://www.googleapis.com/auth/analytics.readonly'; 

// Create Client Object 
$client = new Google_Client(); 
$client->setApplicationName('Google_Analytics'); // name of your app 
$client->setClientId('xxxxxxxxxxxxxxxx.apps.googleusercontent.com'); // from API console 
$client->setAssertionCredentials(new Google_Auth_AssertionCredentials($gaEmail, array($gaAuth), file_get_contents($keyfile))); 

/* Sample Grabbing Analytics data 
$service = new Google_Service_Analytics($client); 
var_dump($service->management_accounts->listManagementAccounts()); 
$response = $service->data_ga->get(
    'ga:87364223', // profile id 
    '2014-09-01', // start date 
    '2014-09-10', // end date 
    'ga:uniquePageviews', 
    array(
     'dimensions' => 'ga:pagePath', 
     'sort' => '-ga:uniquePageviews', 
     'filters' => 'ga:pagePath=~/[a-zA-Z0-9-]+/[a-zA-Z0-9-]+', // http://localhost/browse/style/3#showmoreexample url regex filter 
     'max-results' => '25' 
    ) 
); 
var_dump($response); 
*/ 

// Your analytics profile id. (Admin -> Profile Settings -> Profile ID) 
$profile_id = 'ga:xxxxxxxx'; 
$start = 'yesterday'; 
$end = 'today'; 

try { 
    $service = new Google_Service_Analytics($client); 
    $results = $service->data_ga->get($profile_id, $start, $end, 'ga:visits'); 
    echo $results['totalsForAllResults']['ga:visits']; 
} 
catch(Exception $e) { 
    echo 'There was an error : - ' . $e->getMessage(); 
} 

?> 
Problemi correlati