nach auf stand der alten impl: das summary ist meine email-addresse, bei google steht dort aber mein klarname als kalendername (was früher m.E. auch gegangen ist): Unbenannt.PNG
Testen schaffe ich erst am Abend, muss heute früh ins Büro..
Ankündigung
Einklappen
Keine Ankündigung bisher.
Google Calendar - update für "neue" GoogleAPI
Einklappen
X
-
Ist nun implementiert und committed, bitte testen.
Übrigens: Mit IPv6-Adressen funktioniert der Workaround per nip.io nicht, dort weiss ich keine Lösung. Dürfte aber auch eher selten sein im Heimnetz.
Einen Kommentar schreiben:
-
Das verwirrt mich, weil dies eigentlich früher so war. In meiner Version müsste es der Anzeigename sein.Zitat von psilo Beitrag anzeigenirgendwie war der Kalendername den ich angeben musste jetzt meine E-Mail und nicht mehr der Name den ich in Google unter "Meine Kalender" sehe ?!
Für das IP-Problem habe ich nun übrigens eine Lösung:
Die SV erkennt, wenn sie per IP aufgerufen wird. In diesem Fall wird der Redirect URI ein .nip.io angehängt. Nun kommt das Redirect, die SV erkennt dass da ein nip.io steht und macht ihrerseits ein Redirect zur IP.
Dies habe ich so getestet und funktioniert. Ich hatte aber noch keine Zeit, dies sauber zu implementieren.
Für die Benutzer ist der Ablauf damit wie in meiner ersten Version, nur steht halt in der zu kopierenden Redirect URI ein nip.io.
Einziger Nachteil: Es entsteht natürlich eine Abhängigkeit von nip.io.
Nur haben die wohl eine bessere Erreichbarkei als smartvisu.de
Einen Kommentar schreiben:
-
-
Nunja, gibt wohl schon etwas Traffic. Einige haben ja z.B. den Kalender unterhalb des Menüs, damit wird bei jedem Seitenwechsel ein Request ausgelöst.
Ausserdem ist man dann abhängig von der Verfügbarkeit eines einfachen Webspaces.
Aber mit smartvisu.de habe ich eh nichts zu tun, der Server gehört Apollo. Man müsste ihn anfragen.
Closed Source Software hat den Clientschlüssel wohl im Code eingebaut, auch wenn dieser mit gewissem Aufwand auch extrahiert werden kann.
Einen Kommentar schreiben:
-
Warum nicht.Um die Einrichtung in der Developer Console zu umgehen, müsste das ganze googleV3.php auf smartvisu.de gehostet werden.
Viele (die allermeisten?) Anwendungen, die auf die Google Dienste zugreifen werden das so machen.
Alles andere hat nur eine geringe Reichweite.
Gruß,
Hendrik
Einen Kommentar schreiben:
-
Weil man da diesen Schritt in google_1.php auf der Konsole ausgeführt und danach den Code manuell kopiert hat. Bdi der ganzen Aktion geht es eigentlich nur darum, zuerst due Benutzerzustimmung einzuholen um den temporären Code zu erhalten (wie in google_1.php) und danach mit diesem Codd das refresh_token abzuholen (zuvor google_2.php).Zitat von psilo Beitrag anzeigenwas ich mich eher frage: warum ging google v3 davor ohne diese geschichte
Das finde ich sehr überraschend. Wenn im config.ini die Felder calendar_google_client_id, calendar_google_client_secret und calendar_google_refresh_token mit den alten Werten gefüllt werden, müsste es meines Wissens funktionieren.Zitat von psilo Beitrag anzeigenDie alte Variante war übrigens das was unter "Sonstiger Client" steht. selbst wenn ich die Daten in die .ini File selber eintrage, geht die neue Impl. dagegen nicht mehr
Dies hat wahrscheinlich nichts mit meinen Anpassungen zu tun, sondern scheint ein alter Fehler beim Cache lesen zu sein. Ich werde den natürlich korrigieren, danke.Zitat von psilo Beitrag anzeigenPS: habe gerade versucht anzufangen, beide files zu vergleichen. du hast aber ganz schön viel umgebaut aktuell.. bei manuellem eintragen der alten werte in das ini file, kriege ich auf der kommandozeile beim ausführen vom googleV3.php einen "Warning: fclose() expects parameter 1 to be resource, boolean given in /volume1/web/smartVISU/lib/functions.php on line 198"
Ich habe den Code zwar ziemlich überarbeitet, der grundsätzlichen Ablauf ist aber unverändert. Dies primär mit dem Ziel, die Performance zu verbessern. Im Detail habe ich folgende Änderungen gemacht:- client_id, client_secret und refresh_token werden aus der Konfiguration gelesen.
- Die Abfrage des access_tokens geschieht wie die anderen per file_get_contents anstatt per CURL (Zeilen 49 - 66). CURL ist nicht standardmässig integriert in PHP.
- Das access_token wird in einem Cookie auf dem Client zwischengespeichert, damit dessen Abfrage nur einmal pro Stunde gemacht werden muss. (Zeile 70)
- Die Kalender werden wie zuvor geschrieben Anhand des Namens anstelle der ID selektiert. Zudem werden diese gecached und nur neu gelesen, wenn einer davon noch nicht im Cache ist. (Zeilen 115 - 143)
- Die events selbst werden hingegen nicht mehr auf dem Server gecached, damit Änderungen sofort sichtbar werden. Dafür werden sie auf dem Client gepuffert. Wenn man navigiert, werden auf dem Client sofort die gepufferten Events angezeigt und dann aktualisiert, wenn nach einer halben Sekunde oder so die aktuellen gelade sind. Dies ist gleich wie es auch bei den Daten vom Bus der Fall ist.
- Allgemein werden in jeder Googleabfrage nur die benötigten Felder angefragt (URL-Parameter fields). Zusätzlich wird bei den Events das maximale Datum begrenzt auf dasjenige, des letzten noch anzuzeigenden Termins. Beispiel: Ich habe im Widget eingestellt, dass 10 Zeilen angezeigt werden sollen und dies aus zwei Kalendern. Sind nun im ersten Kalender bereits 10 oder mehr Events vorhanden, wird aus dem zweiten Kalender nur noch bis zum Datum des 10. Events gelesen. Alle späteren würden eh wieder rausfliegen.
- Die Sortierung und Begrenzung auf die Msximalanzahl ist nicht mehr in googleV3.php implementiert sondern nutzt die Merhode des Elernobjekts aus calendar.php
Dies hatte ich mir auch überlegt. Damit könnte zwar das IP-Problem umgangen werden. Der Clientschlüssel wäre aber trotzdem notwendig, weil dieser bei der eigentlichen Kalenderabfrage gebraucht wird.Zitat von henfri Beitrag anzeigenWäre es nicht eine Möglichkeit beide Probleme zu umgehen, indem man diesen Schritt unter SmartVisu.de hostet?
Um die Einrichtung in der Developer Console zu umgehen, müsste das ganze googleV3.php auf smartvisu.de gehostet werden.
Ich werde heute Abend noch testen, ob ich bei Verwendung einer IP einfach als redirect_url den entsprechenden nip.io Eintrag angeben kann. Damit müsste der User die Config-Seite selbst nicht per nip.io aufrufen. Ich weiss aber noch nicht, ob Google einen anderen Host als den Origin zulässt beim Redirect.
Einen Kommentar schreiben:
-
Hallo,
Wäre es nicht eine Möglichkeit beide Probleme zu umgehen, indem man diesen Schritt unter SmartVisu.de hostet?Zitat von smai Beitrag anzeigenWeil die smartVISU Open Source ist.
...
Und dies funktioniert anscheinend nicht mit Webapplikationen, welche per IP aufgerufen werden.
Ich habe schon anderen Anwendungen (Mail-Client z.B.) Zugriff so erteilt.
Der SV würde ich da auch trauen.
Gruß,
Hendrik
Einen Kommentar schreiben:
-
smai was ich mich eher frage: warum ging google v3 davor ohne diese geschichte
Die alte Variante war übrigens das was unter "Sonstiger Client" steht. selbst wenn ich die Daten in die .ini File selber eintrage, geht die neue Impl. dagegen nicht mehr
PS: habe gerade versucht anzufangen, beide files zu vergleichen. du hast aber ganz schön viel umgebaut aktuell.. bei manuellem eintragen der alten werte in das ini file, kriege ich auf der kommandozeile beim ausführen vom googleV3.php einen "Warning: fclose() expects parameter 1 to be resource, boolean given in /volume1/web/smartVISU/lib/functions.php on line 198"Zuletzt geändert von psilo; 18.03.2017, 07:23.
Einen Kommentar schreiben:
-
Weil die smartVISU Open Source ist.Zitat von henfri Beitrag anzeigenWarum braucht man eigentlich die Dev Console? Bei anderen Applikationen geht es doch auch ohne?
Um auf Benutzerdaten bei Google zugreifen zu können, braucht es eine Client-ID und ein Client Secret (in Deutsch Clientschlüssel genannt).
Und dieser Schlüssel ist geheim zu halten, denn wenn jemand damit Unfug treibt, wird dieser (oder im schlimmsten Fall der zugehörige Google Account) gesperrt.
Aber selbst wenn ich nun meinen Schlüssel einbauen würde, nützt das noch nichts. Denn damit eine Applikation Benutzerdaten lesen kann, muss der Benutzer dies erlauben (eigentlich logisch). Und dies funktioniert anscheinend nicht mit Webapplikationen, welche per IP aufgerufen werden.
Einen Kommentar schreiben:
-
Also, obwohl Google bei Script Quellen die Eingabe einer lokale IP zulässt, verweigern sie danach trotzdem die Autorisierung.
Bisher habe ich einzig die Lösung gefunden, dass du die Config Page z.B. per http://192.168.178.100.nip.io aufrufst. Dies ist ein Dienst, der jede IP als Host Name mapped.
Einen Kommentar schreiben:
-
@smai: Danke für deinen Einsatz!!
Warum braucht man eigentlich die Dev Console? Bei anderen Applikationen geht es doch auch ohne?
Einen Kommentar schreiben:
-
Google treibt mich noch in den Wahnsinn
Hast du evtl. im selben Projekt bereits Zugangsdaten vom Typ Webserver? Dann sieht der Dialog etwas anders aus, weil er dich fragt, ob du diese verwenden willst: screenshot.pngZitat von psilo Beitrag anzeigenSchritt 9 gibt es bei mir in der Google Developer Console immer noch nicht.
Du kannst dann entweder Neue Client-ID erstellen klicken und es geht weiter wie in der Anleitung. Oder die wählst unten die bestehende Client-ID, muss dann aber den Rest von Hand machen.
Aber das eigentliche Problem mit lokalen IPs löst dies trotzdem nicht. Ich werde das am Abend mal testen mit IP.Zuletzt geändert von smai; 17.03.2017, 15:42.
Einen Kommentar schreiben:
-
Einen Kommentar schreiben:


Einen Kommentar schreiben: