Ankündigung

Einklappen
Keine Ankündigung bisher.

Google Calendar - update für "neue" GoogleAPI

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    So, nächster Versuch ist committed.

    Der Ablauf ist wie oben, aber anstelle der Weiterleitungs-URL muss nun das Feld Autorisierte JavaScript-Quellen bei Google ausgefüllt werden.

    Achtung: Das neue Popup ist anscheinend anfälliger für Popup-Blocker, also erst blockierte Popups prüfen und dann hier meckern.

    Kommentar


      smai teste gleich

      Schritt 9 gibt es bei mir in der Google Developer Console immer noch nicht.

      Und gehört das so, dass es hier 2x den key instruct_7c gibt?
      https://github.com/Martin-Gleiss/sma...op/lang/de.ini

      Beim ersten Autorisieren ging er in die Config zurück. Nachdem der Kalender leer blieb, wollte ich das nochmal machen. Jetzt hängt er auf dem Popup fest.. ok war der Blocker. Geht trotzdem aber nicht:
      ff.PNG
      Zuletzt geändert von psilo; 17.03.2017, 14:38.

      Kommentar


        Zitat von psilo Beitrag anzeigen
        gehört das so, dass es hier 2x den key instruct_7c gibt?
        https://github.com/Martin-Gleiss/sma...op/lang/de.ini
        eher nicht
        der der erste sollte 7b sein, ist korrigiert. Ich habe den Abschlusstest zugegebenermassen nur in Englisch gemacht.

        Kommentar


          keine besserung - hier mal mit requestdaten - leicht zensiert um meine keys..:

          Unbenannt-1.png

          Kommentar


            Google treibt mich noch in den Wahnsinn

            Zitat von psilo Beitrag anzeigen
            Schritt 9 gibt es bei mir in der Google Developer Console immer noch nicht.
            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.png


            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.

            Kommentar


              nein, nur vom typ "Sonstige"

              Kommentar


                @smai: Danke für deinen Einsatz!!

                Warum braucht man eigentlich die Dev Console? Bei anderen Applikationen geht es doch auch ohne?

                Kommentar


                  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.

                  Kommentar


                    Zitat von henfri Beitrag anzeigen
                    Warum braucht man eigentlich die Dev Console? Bei anderen Applikationen geht es doch auch ohne?
                    Weil die smartVISU Open Source ist.

                    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.

                    Kommentar


                      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.

                      Kommentar


                        Hallo,
                        Zitat von smai Beitrag anzeigen
                        Weil die smartVISU Open Source ist.

                        ...
                        Und dies funktioniert anscheinend nicht mit Webapplikationen, welche per IP aufgerufen werden.
                        Wäre es nicht eine Möglichkeit beide Probleme zu umgehen, indem man diesen Schritt unter SmartVisu.de hostet?
                        Ich habe schon anderen Anwendungen (Mail-Client z.B.) Zugriff so erteilt.
                        Der SV würde ich da auch trauen.


                        Gruß,
                        Hendrik

                        Kommentar


                          Zitat von psilo Beitrag anzeigen
                          was ich mich eher frage: warum ging google v3 davor ohne diese geschichte
                          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 anzeigen
                          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
                          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 anzeigen
                          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"
                          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.

                          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:
                          1. client_id, client_secret und refresh_token werden aus der Konfiguration gelesen.
                          2. 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.
                          3. Das access_token wird in einem Cookie auf dem Client zwischengespeichert, damit dessen Abfrage nur einmal pro Stunde gemacht werden muss. (Zeile 70)
                          4. 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)
                          5. 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.
                          6. 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.
                          7. Die Sortierung und Begrenzung auf die Msximalanzahl ist nicht mehr in googleV3.php implementiert sondern nutzt die Merhode des Elernobjekts aus calendar.php

                          Zitat von henfri Beitrag anzeigen
                          Wäre es nicht eine Möglichkeit beide Probleme zu umgehen, indem man diesen Schritt unter SmartVisu.de hostet?
                          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.
                          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.

                          Kommentar


                            Um die Einrichtung in der Developer Console zu umgehen, müsste das ganze googleV3.php auf smartvisu.de gehostet werden.
                            Warum nicht.
                            Viele (die allermeisten?) Anwendungen, die auf die Google Dienste zugreifen werden das so machen.
                            ​​​​​​Alles andere hat nur eine geringe Reichweite.

                            Gruß,
                            Hendrik

                            Kommentar


                              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.

                              Kommentar


                                smai mit im ini file manuell eingetragenen Werten geht es jetzt. irgendwie war der Kalendername den ich angeben musste jetzt meine E-Mail und nicht mehr der Name den ich in Google unter "Meine Kalender" sehe ?!
                                Zuletzt geändert von psilo; 19.03.2017, 06:48.

                                Kommentar

                                Lädt...
                                X