2014-05-13 15 views
6

Pobrałem pliki API z https://github.com/google/google-api-php-client i próbowała poniżej kodu ...Jak pobrać google analytics w czasie rzeczywistym activeUsers w 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); 

To pokazuje błąd (401) Zaloguj Wymagane”

Kiedy próbowałem rozmowę z https://console.developers.google.com/project/apps~rational-photon-578/apiui/api/analytics/method/analytics.data.realtime.get

I dostali wymagani użytkownicy w czasie rzeczywistym należą do profiluid.

W jaki sposób mogę zaimplementować proces logowania (bez przechodzenia do witryny Google)?

Próbowałem poniższy kod ...

$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); 

Oto jestem coraz access_token i dane ... ale pobierania danych analityka nie działa, ponieważ błędem „zezwolenie Insuffient”

Dostałem wyniki, gdy wykonałem test z konsoli Google z wymienionym identyfikatorem profilu.

Odpowiedz

2

Dostęp do interfejsu API Google Analytics wymaga uwierzytelnienia. Wygląda na to, że chciałbyś uzyskać dostęp do własnych danych, a nie danych należących do innego użytkownika. Aby to zrobić, trzeba będzie stworzyć klienta lib service account.

PZP na Github, którego używasz, ma przykład za korzystanie z usługi stanowią można go znaleźć service-account.php

Przykład wykorzystuje API Boooks. Można go zmienić na Analytics API Google, wykonując następujące

$service = new Google_Service_Books($client); 

zmianę do

$service = new Google_Service_Analytics($client); 

Jeśli masz jakiekolwiek problemy, daj mi znać, a ja sprawdzić, czy nie mogę dać Ci pełną przykład za pomocą Google Analytics z kontem usługi.

Uwaga dla innych:

W czasie tej kwestii API w czasie rzeczywistym jest jeszcze w fazie beta trzeba zażądać dostępu. Zwykle dostęp do nich to 24 godziny.

+0

Hej dzięki za odpowiedź .. to naprawdę pomogło dużo :) Teraz otrzymuję błąd „Insuffient zezwolenie "na dostęp do użytkowników w czasie rzeczywistym. Próbowałem pod kodem 'code' $ optParams = array ( 'dimensions' => 'rt: medium'); try { $ results = $ Service-> data_realtime-> get ( 'ga: 123123123', 'RT: activeUsers', $ optParams); // Sukces. } catch (apiServiceException $ e) { // Obsługa wyjątków usług interfejsu API. $ error = $ e-> getMessage(); } 'kod' – jpk

+0

W czasie rzeczywistym api jest nadal w fazie beta, musisz poprosić o dostęp. Google, teraz nie mam dostępu do komputera. Zwykle dostęp do nich to 24 godziny. – DaImTo

+0

Dodałem adres e-mail (otrzymałem z konta usługi) do konta użytkowników Analytics i otrzymałem uprawnienia. Czy uzyskanie dostępu do tego adresu e-mail zajmie 24 godziny? – jpk

1

Mam powodzeniem wyświetla aktualne dane z mojego konta GA na mojej stronie z kodu php poniżej:

<?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(); 
} 

?> 
Powiązane problemy