Wie geht da, Google Analytics mit APIv4 im eigenen Webprojekt sicher zu implementieren? Das ist keine Raketenwissenschaft. Möchte man sich beispielsweise im Backend seines Webprojektes die REALTIME Userdaten anzeigen (ich mache das gern in Shop-backend), hat man verschiedene Möglichkeiten, man kann es direkt über Script mittels AWStats oder Programm-Sessions auslesen oder wenn man schon Google-Analytics im Web-Projekt verwendet, dann geht das auch über die Google-API. Und die Google API soll heute das Thema sein:

Registrieren bei Google API Console

Hat man sich schon für irgendein Google Produkt registriert, kann man diesen Dienst der console.developers.google.com problemlos nutzen.
Die Registratur sollte selbsterklärend sein.

Google Console

Mit Useranmeldung bei Nutzung der API im Projekt oder über einen Google Identity and Access Management (IAM-Modus)

Um einen gewissen Schutz an Datensicherheit zu gewährleisten, kann man die API mit zwei unterschiedlichen Mechanismen betreiben. Die erste Möglichkeit ist, über eine Authentifizierung, d.h. egal wo man die API in seinen Programmcode verwendet, es wird immer ein Google-Login angeboten bzw. abverlangt, um die Berechtigung zur Nutzung im Programmcode zu bestätigen. Der Work-Flow ist bekannt z.B. vom Checkout bei Paypal-Zahlungen. Die Zweite, und wie ich finde, der brauchbarere Mechanismus ist der über das sogenannte Dienstkonto. Der Unterschied ist, dass man das Dienstkonto über eine Dienstkonto-ID und Schlüssel-ID für den gewünschten Dienst in Form einer JSON-String im eigenen Projekt hinterlegen kann.

 

Dienstkonto mit Schlüssel json, außerhalb der Projektroot

Tipp: die Datei, welche die Zugangsdaten zum Dienstkonto beinhaltet NIEMALS in die Webroot legen, wenn das nicht gehen sollte (z.B. bei Webspace gemietet bei einschlägigen Webhostern) dann lege man z.B. die Datei in ein extra Verzeichnis und legt einen Verzeichnisschutz darauf. Wichtig ist nur, kein Zugriff von Außen über den Browser zulassen.

google_console_dienstkonto

Verknüpfung von Google Analytics und Google Console

Jetzt kommt einer der wichtigsten Schritte, man muss natürlich das Dienstkonto in der Console mit Analytics verknüpfen. Das ist, wie ich finde, manchmal sehr schlecht bei den einschlägigen Anleitung von Google beschrieben.

google_apiv4_analytics

Dazu logt man sich in seinen Analytics-Account ein, im Menüpunkt->Verwaltung->Nutzerverwaltung die Dienstkonto-ID (welche in Form einer E-Mailadresse vorliegt) und fügt diese mit in die Liste in der Nutzerverwaltung ein. Dann noch die Berechtigung für das Konto angegeben, in unserem Fall nur die Lesen und analysieren Rolle vergeben. Vorsicht bei der Verwendung mit Vollzugriff, da die Gefahr bei Kompromittierung des Webprojektes, Änderungen an den Google-Daten möglich sind.

Damit sind wir erstmal mit den Vorarbeiten fertig und dem Einsatz im eigenen Webprojekt sollte Nichts mehr im Wege stehen.
Möchte man für weitere Programmbibliotheken, z.B. Google Translate, eine API-Anbindung entwickeln, geht man analog der Beschreibung wie für den Zugriff der REALTIME Userdaten aus Google Analytics vor.

Programmierung über APIv4 (composer oder Download)

Hat man Zugriff auf die Konsole seines Server, ist es die bequemste Art über composer die Google APIs Client Library am Beispiel der PHP-Scriptsprache zu installieren. Hat man keinen Zugriff auf seine Serverkonsole, dann kann man die Library von meinem Server downloaden und per SFTP in das eigene Projekt uploaden.

Den Zugriff programmieren:

Google Analtytics Live Shop

Abschluss:

So schön wie die API-Zugriffe sind, stellt Google dieses Dienste nicht ganz unentgeltlich zur Verfügung. Möchte man beispielsweise, den REALTIME User Zugriff als kleinen Mehrwert öffentlich auf seiner Webseite anbieten, können schon mal die Kontingente ausgeschöpft werden. Jetzt hat man die Möglichkeit, entweder mehr Kontingente einzukaufen oder einen kleinen anderen Weg versuchen.

google_console_kontigente_ueberwachen

Wen man sich die REALTIME Userdaten über den Mechanismus holt, wie weiter oben beschrieben, dann wäre das auch möglich über einen Cron-Job (jede Minute) zu regeln, damit hat man nur einen Zugriff auf die API. Das Ergebnis könnte man in eine HTML-DATEI schreiben und aus der Webseite nicht auf die API-Zugriffsdatei sondern auf eine HTML-Datei zugreifen.

Dafür erweitert man die API-Zugriffsdatei, ungefähr so:

Jetzt werden die REALTIME Userdaten in die Datei geschrieben und nicht mehr an den Browser gesendet.

Auf der Webseite braucht man nur noch die Datei (ga_daten.html) inkludieren, z.B. über einen Ajax-Aufruf:

Nun ist es egal, wie viele User auf euren Webprojekt gerade online sind, denn der Zugriff zur API erfolgt nur über den einen Cron Job.

TOTAL Users: 0

*(REALTIME Userdaten eines unserer Shopsystem)

Viel Spaß damit.

 

Please rate this