Danke für Deine Mühe!!! Ich hatte mir zwischenzeitlich wie folgt geholfen: alte Verwendung googleV3.php (inkl. Zugangsdaten) und calendar.php was so halb funktioniert. Gern würde ich es jetzt noch einmal richtig machen...in welche config.ini müssen die Zugangsdaten und wie genau?
Gruss, Michael
Ankündigung
Einklappen
Keine Ankündigung bisher.
Google Calendar - update für "neue" GoogleAPI
Einklappen
X
-
ilex z1marco lexxmm
aus anderen Gründen musste ich mir nun doch mal ein Google-Konto erstellen. Da habe ich den Authentifizierungsprozess gleich mal getestet. Hier eine Zusammenfassung:- Vollständig vorhandene Credentials
Wenn aus einer vorherigen smartVISU-Version funktionierende Credentials (client_id, client_secret und refresh_token) vorhanden sind, kann man diese einfach mit einem Text-Editor in die config.ini übernehmen und braucht dann keine neue Authentifizierung durchzuführen. Man kann diese Credentials auch für mehrere Geräte nutzen.
. - Neue Authentifizierung mit eigener Domain
Der OAuth Client akzeptiert als "authorisierte Javascript-Quelle" neben "http://localhost" nur Adressen mit offiziellen Domain-Endungen, also keine internen IP-Adressen (dazu siehe Punkt 3). Hat man also einen Reverse Proxy am Start und kann eine eigene Domain angeben, die auf den smartVISU-Server führt, ist die Authentifizierung einfach. Man muss dazu nur die ./lib/base/config.js wie oben beschrieben um den plugin_name erweitern. Dann funktioniert der Bezug des refresh_tokens über Google oauth wieder. Wer auf dem smartVISU-Server einen Browser starten und die Visu auf http://localhost aufrufen kann, ist ebenfalls fein raus, wenn dies als "authorisierte Javascript-Quelle" eingetragen ist.
. - Neue Authentifizierung mit IP-Adresse
Weil Google keine privaten IP-Adressen als "authorisierte Javascript-Quelle" akzeptiert, verwendet das Konfigurationsskript den DNS-Dienst "nip.io" und fordert dazu auf, z.B. "192.168.1.27.nip.io" in das Feld einzutragen. nip.io sollte eigentlich auf die interne IP-Adresse umleiten, aber Sicherheitsmechanismen des Routers verhindern dies. Abhilfe schafft ein Eintrag in die hosts-Datei (unter Windows "%windir%/System32/drivers/etc/hosts"), wobei die Beispiel-IP durch die des smartVISU-Servers zu ersetzen ist:
Wer eine Fritzbox hat, kann stattdessen unter Heimnetz > Netzwerk > Netzwerkeinstellungen (Tab) die Domain "nip.io" in die Liste der Ausnahmen zum DNS-Rebind-Schutz eintragen. Davon profitieren dann alle Geräte im Netzwerk.Code:192.168.1.27 192.168.1.27.nip.io
Zudem muss die o.g. Erweiterung um den plugin_name in der config.js UND zusätzlich in der ./pages/base/config.google.html in Zeile 53 eingetragen werden.
Der Test des Kalenders erfolgt am besten, indem man folgende URL aufruft:
Wenn hier keine Fehler ausgegeben werden und mindestens ein gültiger Kalender-Eintrag gezeigt wird, dann ist alles in Ordnung. Fehlende Kalendereinträge in der Visu haben dann andere Ursachen, z.B. falsche Parametrierung der Kalender-Widgets oder fehlerhafte Eingaben im Konfigurationsfeld "Kalender" für die Kalendernamen.Code:<DeineIP>/smartVISU/lib/calendar/service/googleV3.php?debug=1
Die genannten Änderungen sind bereits im develop branch. Die Schritt-für-Schritt-Anleitung auf der Konfig-Seite aktualisiere ich dann noch.
Gruß
Wolfram
- Likes 1
Einen Kommentar schreiben:
- Vollständig vorhandene Credentials
-
lexxmm wie ist hier der Stand? Hast Du es mit den alten Credentials hinbekommen?
Die Fehlermeldung beim Schließen des Fensters findest Du in der Ecke oben rechts im Hauptfenster der Konfigurationsseite.
Google hat das alte JavaScript für die Authorisierung Ende März außer Betrieb genommen. Für client_ids, die vor dem 29.7.22 erstellt wurden, kann der Code noch genutzt werden, wenn man bei der Anfrage einen beliebigen „plugin_name“ angibt. Wenn Du eine alte client_id und ein altes client_secret hast, aber das refresh_token fehlt, dann kannst Du in Version 3.3.1 (Master) in der ./lib/base/config.js am Ende von Zeile 176 ein Komma setzen und danach folgende Zeile einfügen:
, so dass der Bezug des Tokens hoffentlich wieder klappt. In der Develop-Version ist dies in Zeile 190.Code:plugin_name: 'smartVISU'
Für einen Test wäre ich dankbar!
Gruß
Wolfram
Einen Kommentar schreiben:
-
Der Code in googleV3.php ist seit smartVISU v2.9 nicht mehr verändert worden, außer dass ich das Fehlerhandling erweitert habe. Deshalb besteht bei einem Update von smartVISU nicht die Notwendigkeit, den Authentifizierungsprozess im Konfigurationsmenü erneut durchzuführen. Es reicht, einfach die Parameter 'calendar_google_client_id', 'calendar_google_client_secret', 'calendar_google_refresh_token' aus der bisherigen config.ini zu übernehmen.
Wenn diese Einträge in der config.ini stehen, kann man den Kalender wie folgt testen:
Welche Meldungen gibt es dort?Code:<DeineIP>/smartVISU/lib/calendar/service/googleV3.php?debug=1
Welches Fenster? Es gibt ein Popup mit den ganzen Anweisungen und dem Button "Authorisieren" und wenn man den klickt, öffnet sich ggfls. ein neues Browser-Fenster mit der Authorisierung bei Google. Gibt es Meldungen in der Browser-Konsole?Zitat von lexxmm Beitrag anzeigenDas Fenster geht am Ende einfach zu und nix weiter passiert...Es gibt keine Fehlermeldung
Da bei mir weitgehend Google-freie Zone ist, kann ich den Prozess nicht selbst durchführen / testen. Es wäre gut, wenn sich hier jemand die aktive Weiterentwicklung zur Aufgabe machen könnte.
Gruß
Wolfram
Einen Kommentar schreiben:
-
Da Auth nicht klappt, habe ich einfach mal die client_id, client_scret und refresh_token hard in die neue googleV3.php geschrieben. Ein php -q googleV3.php ergibt jetzt:
hängt das damit zusammen weil der Typ noch auf "Desktop" steht?Code:[{"start":1697407200,"end":1697493600,"title":"Kalenderwoche 42 2023","content":"","where":"","color":"","link":"https:\/\/www.google.com\/calendar\/event?eid=*********************************************************************","calendarname":"Kalenderwochen","calendarcolor":"#7bd148"}]PHP Fatal error: Cannot declare class calendar_google, because the name is already in use in /var/www/html/smartvisu/lib/calendar/service/googleV3.php on line 267
Einen Kommentar schreiben:
-
Hallo
wie ist hier der Stand der Dinge? Ich habe ein großes Update auf aktuelle smarthomeng / smartvisu durchgeführt und nun auch keinen Google Cal mehr. Selbst über https aufruf bekomme ich die auth scheinbar nicht hin. Das Fenster geht am Ende einfach zu und nix weiter passiert...Es gibt keine Fehlermeldung
Einen Kommentar schreiben:
-
hat sich geklärt, openssl hat als php extension noch gefehlt .. schande über mich
Einen Kommentar schreiben:
-
hmm laut phpinfo ist das alles drin, via cli geht es ja auch.
er scheitert dann offenbar am file_get_contents mit den daten. zugriff auf URLs via allow_url_fopen ist On. Mal weiter untersuchen.
file_get_contents auf www.google.com geht - allerdings auch nur via CLI... Muss mal die Apache Settings weiter checken. phpinfo() als Webpage sagt aber alles wesentlich gesetzt.. Notfalls ziehe ich die SV halt auch endlich in nen Docker Container um...Zuletzt geändert von psilo; 19.02.2022, 10:39.
Einen Kommentar schreiben:
-
Laut Komplettanleitung müssen folgende php-Pakete installiert werden:
libawl-php, php-curl, php, php-json, php-xml, php-mbstring
Der Kalender braucht auf jeden Fall XML und json. Json braucht er wohl auch, um den Cache für das Access Token auszulesen.
Groß
Wolfram
Einen Kommentar schreiben:
-
Hi, mir ist heute eine der NAS Platten im RAID verreckt.. Danach hat meine Synology offenbar die Web-Sachen neu aufgesetzt. Seitdem kriege ich beim Google Calender bei browser request auf die googleV3.php eine
[
{
"title": "Calendar: Google",
"text": "No such file or directory<br><br>Unable to retrieve access token."
}
]
Über CLI via php googleV3.php kommt der Kalender.
Das Setup hat davor funktioniert, Einrichtung usw war ok. Ich glaube mich zu erinnern, dass ich damals eine PHP Extension aktivieren musste. CURL ist eigentlich schon an.
Erinnert sich noch jemand?
Einen Kommentar schreiben:
-
Hallo,
gibt es noch weitere Ideen? Ich schaffe es auch nicht mich bei Google zu authentifizieren da nur noch https Adressen bei Google hinterlegt werden können.
Leider sind in nginx keine Zertifikate abgelegt und die Konfiguration scheint wohl nicht so einfach zu sen.
vielen Dank
Einen Kommentar schreiben:
-
Wenn für den Webserver (Apache oder nginx) Zertifikate vorhanden sind, dann müsstest Du smartVISU per https aufrufen können. Zwar bekommst Du dann keine Daten vom Backend über den Websocket, aber für die einmalige Autorisierung der Schlüssel bei Google könnte es reichen.
Willst Du das nochmal probieren (mit der Änderung in der base.js)?
Gruß
Wolfram
Einen Kommentar schreiben:
-
Kannst Du Firefox nicht dazu überreden, die Verbindung trotzdem zu öffnen? Am Zertifikat kann es IMHO nicht liegen, da nip.io sicher ein dem Browser bekanntes Zertifikat besitzt. Das Problem ist wahrscheinlich eher, dass Firefox den gemischten Betrieb ( unverschlüsselt zu smartVISU / verschlüsselt zu nip.io) nicht ohne weiteres akzeptiert.
Gruß
WolframZuletzt geändert von wvhn; 03.06.2021, 13:32.
Einen Kommentar schreiben:
-
Danke für die Hinweise. Stefan hat recht. Ohne Zertifikat verweigert der Browser nach der Änderung in base.js den Zugriff:Kein Verbindungsversuch unternommen: Mögliches Sicherheitsproblem
Firefox hat ein mögliches Sicherheitsrisiko erkannt und daher 192.168.xx.yy.nip.io nicht aufgerufen, denn die Website benötigt eine verschlüsselte Verbindung.
Der ReverseProxy-Workaround ist für mich schon sehr aufwendig. Vielleicht gibt es ja noch eine einfachere Lösung des Problems...
Viele Grüße
Einen Kommentar schreiben:


Einen Kommentar schreiben: