Hallo Kiran,
-
Service Account
Mit serverseitiger Autorisierung mit der Google Python Client API können Sie diese Demo verwenden, um Zugriff auf Google Analytics-Daten und Diagramme für jeden Benutzer ohne Anmeldung zu erhalten.
-
oAuth für Google APP
Der andere Weg ist die Verwendung von oAuth. In diesem Fall benötigen Sie jedoch ein kostenpflichtiges Google Apps for Work-Konto Google Apps Sie können hier lesen, wie Sie Apps und oAuth kombinieren, um Zugriff ohne Anmeldung zu erhalten.
Ich habe hier den funktionierenden Code für die neue (2016) Google Client PHP API Beta für den anonymen Zugriff mit JSON hinzugefügt - einschließlich eines amCharts.
Zusätzlich kann der Erneuerungsprozess für die JSON-Berechtigungsdateien automatisiert werden - dies ist jedoch nicht in diesem Codebeispiel enthalten. Ein ClientLogin-Token kann 2 Wochen ab dem Ausstellungsdatum gültig sein, aber diese Grenze ist serviceabhängig und kann kürzer sein. Sie können die Lebensdauer in Google_AssertionCredentials.php (Zeile 24) ändern, obwohl dies ein Sicherheitsrisiko darstellt (für Ihr Geld - wenn jemand die Seite automatisch aufruft, erschöpfen Sie das erlaubte duty-free Volumen)
class Google_AssertionCredentials {
const MAX_TOKEN_LIFETIME_SECS = 360000;
Um das autoload.php korrekt funktionieren zu lassen, müssen Sie die Client-PHP-API-Ressourcen mit composer.phar in htdocs (Apache) oder wwwroot (IIS) installieren und diesen Code im Ordner "vendor" platzieren.
Ich habe den dataLoader nicht verwendet und auskommentiert, da amChart in meiner Umgebung beim Laden hängen bleibt. Daher habe ich den Dataprovider verwendet, der zuverlässig funktioniert.
/*
"dataLoader": {
"url": "data.php",
"format": "json"
},
*/
Gimba - Google Analytics - GimbaChartAll
body, html {
font-family: Verdana;
font-size: 10px;
}
#chartdiv {
width: 1100px;
height: 700px;
margin-left:auto;
margin-right:auto;
}
var dataJS = <?php echo dataGA(); ?>;
var chart = AmCharts.makeChart("chartdiv", {
"type": "serial",
"theme": "light",
/*
"dataLoader": {
"url": "data.php",
"format": "json"
},
*/
"dataProvider": dataJS ,
"categoryField": "country",
"categoryAxis": {
"gridColor": "#0000FF",
"gridAlpha": 0.07,
"title": "Country"
},
"creditsPosition": "top-right",
"categoryField": "country",
"categoryAxis": {
"gridAlpha": 0.07,
"gridPosition": "start",
"tickPosition": "start",
"title": "Country"
},
"valueAxes": [ {
"id": "v1",
"gridAlpha": 0.1,
"axisColor": "#0000ff",
"title": "Users/Sessions"
}, {
"id": "v2",
"gridAlpha": 0,
"axisColor": "#0000ff",
"position": "right",
"title": "Page views"
} ],
"graphs": [ {
"startDuration": 3,
"type": "column",
"title": "Sessions",
"valueField": "sessions",
"fillColors": "#0000ff" ,
"lineAlpha": 0,
"fillAlphas": 0.6
}, {
"type": "column",
"title": "Users",
"valueField": "users",
"fillColors": "#0000ff" ,
"lineAlpha": 0,
"fillAlphas": 0.2
}, {
"type": "line",
"valueAxis": "v2",
"title": "Page views",
"valueField": "pageviews",
"lineColor": "#0000ff" ,
"lineThickness": 1,
"bullet": "round"
} ],
"legend": {}
} );
'xxxxxxxxxxxxxxxxxxxxxx@xxxxxxxxxxxxxxxx.iam.gserviceaccount.com',
'key' => file_get_contents(__DIR__ . '/OAuthClientServiceAccount1.json'),
'profile' => 'xxxxxxxxx'
);
// Erstellt und gibt das Analytics-Serviceobjekt zurück.
// Laden der Google API PHP-Clientbibliothek.
// Erstellen und Konfigurieren eines neuen Client-Objekts.
$client = new Google_Client();
$client->setApplicationName( 'Gimba3' );
$analytics = new Google_Service_Analytics($client);
$scopes = array('https://www.googleapis.com/auth/analytics.readonly');
$client->setScopes($scopes);
try{
$client->setAuthConfigFile(__DIR__ . '/OAuthClientServiceAccount1.json');
}
catch(Exception $e){
echo "Schlüssel NICHT OK";
echo $e->getMessage()."";
}
try{
if( $client->isAccessTokenExpired() ) {
$client->refreshTokenWithAssertion($client->setAuthConfigFile(__DIR__ . '/OAuthClientServiceAccount2.json'));
}
}
catch(Exception $e){
echo "Erneuerungsschlüssel NICHT OK";
echo $e->getMessage()."";
}
$projectId = '123464155';
$results = $analytics->data_ga->get(
'ga:'.$projectId,
'30daysAgo',
'today',
'ga:sessions,ga:users,ga:pageviews',
array(
'dimensions' => 'ga:country',
'sort' => '-ga:sessions',
'max-results' => 10
));
$rows = $results->getRows();
//var_dump($rows);
$dataGA = array();
foreach( $rows as $row ) {
$dataGA[] = array(
'country' => $row[0],
'sessions' => $row[1],
'users' => $row[2],
'pageviews' => $row[3]
);
}
$res = json_encode($dataGA);
return $res;
}
?>
Mit freundlichen Grüßen Axel Arnold Bangert - Herzogenrath 2016