Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Kein Zugriff auf den Google-Kalender (https://www.delphipraxis.net/204789-kein-zugriff-auf-den-google-kalender.html)

NoName1 29. Jun 2020 15:54

Kein Zugriff auf den Google-Kalender
 
Guten Tag,
ich benutze seit Jahren TAdvCalender aus dem TMS-Cloud-Pack.
Heute merke ich, dass trotz erfolgreicher Anmeldung am Google-Konto, keine Daten
mehr in der Anwendung angezeigt werden. War vor ca. 14 Tagen noch anders.
Auch mit der Demo von TMS erhalte ich selbiges Ergebnis. Es werden keine Daten angezeigt!

Weiss vielleicht jemand, ob sich beim Zugriff etwas geändert hat?

Vielen Dank für Eure Hilfe.

SebastianZ 29. Jun 2020 16:07

AW: Kein Zugriff auf den Google-Kalender
 
Zitat:

Zitat von NoName1 (Beitrag 1468465)
Guten Tag,
ich benutze seit Jahren TAdvCalender aus dem TMS-Cloud-Pack.
Heute merke ich, dass trotz erfolgreicher Anmeldung am Google-Konto, keine Daten
mehr in der Anwendung angezeigt werden. War vor ca. 14 Tagen noch anders.
Auch mit der Demo von TMS erhalte ich selbiges Ergebnis. Es werden keine Daten angezeigt!

Weiss vielleicht jemand, ob sich beim Zugriff etwas geändert hat?

Vielen Dank für Eure Hilfe.

Hallo,

wir arbeiten schon eine Weile mit dem TAdvCalender aus dem TMS-Cloudpack (immer wieder mit Problemen, aufgrund der Teils schleißigen Programmierung von TMS.)
Das Problem haben wir vor 4 Wochen schon an TMS gemeldet und erhielten lediglich die Antwort: Das liegt an Google, wir sollen doch ein "Sleep(500)" zwischen 2 Anfragen an google senden, dann geht's wieder.

Nach einiger Suche fanden wir dann die Quelle des Problems:
Ursache für das Problem ist der Aufbau der URL in der Unit "CloudCustomGCalendar.pas".
Hier wird fälschlicherweise der optionale Parameter "key" mit dem OAuth ClientID belegt, anstatt mit dem API Key (oder man lässt den Parameter einfach weg). Diese Punkte sind seitens Google 2 separate Werte (war früher eventuell mal anders).

Wir haben die Sourcen von TMS selbst umgearbeitet und beim URL-Aufbau den "Key" - Parameter einfach entfernt. Seit daher läuft die Anbindung wieder problemlos.

Da wir die Sourcen generell recht umfangreich gepatcht haben (Fehlerbehandlung, kleinere Fehler in der Verwendung der Google-API, Speicherlücken, fehlendes schließen von Handles, ...) kann ich die Änderungen leider nicht weitergeben.

NoName1 29. Jun 2020 17:23

AW: Kein Zugriff auf den Google-Kalender
 
Danke für Deine Antwort SebastianZ,
Du könntest aber evtl. die Unit nennen und die Zeile mit der Änderung kopieren und hier hosten?
Ich selber bin mir nicht sicher was und wo ich ändern soll.

MfG

TurboMagic 29. Jun 2020 20:50

AW: Kein Zugriff auf den Google-Kalender
 
Ursache für das Problem ist der Aufbau der URL in der Unit "CloudCustomGCalendar.pas".

Such also mal wo in dieser Unit eine URL zusammen gebaut wird ;-)

SebastianZ 30. Jun 2020 09:04

AW: Kein Zugriff auf den Google-Kalender
 
Zitat:

Zitat von NoName1 (Beitrag 1468488)
Danke für Deine Antwort SebastianZ,
Du könntest aber evtl. die Unit nennen und die Zeile mit der Änderung kopieren und hier hosten?
Ich selber bin mir nicht sicher was und wo ich ändern soll.

MfG


Hier mal ein kleiner Ausschnitt. Im Prinzip musst du nur alle Verwendungenvon key= raussuchen und entfernen.

Delphi-Quellcode:
...
...
...
procedure ...GetCalendarInt(ID: string; FromDate, ToDate: TDate; ChangedSince: TDateTime; MaxResults: integer = 250);
var
...
begin
  url := APIBase + '/calendar/v3/calendars/' + URLEncode(ID) + '/events';

//------------------------------------------------
// Original mit Key:
//  url := url + '?key=' + App.Key + '&singleEvents=True&orderBy=startTime&maxResults=' + IntToStr(MaxResults);
//------------------------------------------------

//Meine Korrektur:
  url := url + '?singleEvents=True&orderBy=startTime&maxResults=' + IntToStr(MaxResults);
...
...
...

NoName1 30. Jun 2020 10:28

AW: Kein Zugriff auf den Google-Kalender
 
SebastianZ:
ich habe den Code
Delphi-Quellcode:
//Meine Korrektur:
  url := url + '?singleEvents=True&orderBy=startTime&maxResults=' + IntToStr(MaxResults);
in die Unit übernommen. Trotzdem werden die Daten aus dem Google-Calender nicht ausgelesen.

Da die Subcription des TMSCloudPack abgelaufen ist, bekommt man ja auch keine Hilfe von TMS.
Was ja auch verständlich ist. Und neu kaufen, um dann festzustellen es geht wieder nicht?

Aber was kann es denn noch sein?

Edit:
Ich habe in der Unit CloudCustomGCalende.pas nach "Url" und ?key gesucht. Es werden 8 Ergesbisse angezeigt.
Müssen die folgenden auch ersetzt werden und wenn ja mit welchen Werten:
Bsp:
Zeile 725, 884 und 925: url:=url + ?key + App.Key
Zeile 1357: url := APIBase + '/calendar/v3/calendars/' + URLEncode(Item.CalendarID)
+ '/events/' + URLEncode(Item.ID) + '?key=' + App.Key + '&access_token=' + Token_Access;

usw.

SebastianZ 30. Jun 2020 15:20

AW: Kein Zugriff auf den Google-Kalender
 
Meine Änderung war nur ein Muster.

Das ganze muss in allen Teilen wo eine Url für den Google Kalender aufgebaut wird geprüft werden.

Also ja, du musst die Zuweisung key=' + App.Key überall korrigieren, damit alles funktioniert.

Für ein besseres Verständnis des ganzen, kann ich auch empfehlen dir die API-Referenz anzusehen: https://developers.google.com/calendar/v3/reference

sh17 30. Jun 2020 15:44

AW: Kein Zugriff auf den Google-Kalender
 
Es liegt aber nicht an der neuen Privacy-Verordnung von Google? Ohne eine Prüfung Deiner App durch Google muss der Anwender der Nutzung einer "unsicheren" App zustimmen - ähnlich einem abgelaufenem SSL-Zertifikat. Diese Änderung ist erst vor 2 Wochen passiert.
Also alle alten API-Tokens sind damit ungültig. Wenn Du Dir einen neuen Token holst mit neuer Zustimmung, dann sollte es wieder klappen. Und dann sollte man auch deinen API-Zugriff durch Google mal prüfen lassen - über die Google Console.
Mit dem alten Token bekommt man nicht etwa eine Fehlermeldung, sondern man bekommt einfach keine Daten - Kalender nicht gefunden etc

NoName1 3. Jul 2020 06:59

AW: Kein Zugriff auf den Google-Kalender
 
Zitat:

Zitat von sh17 (Beitrag 1468604)
Es liegt aber nicht an der neuen Privacy-Verordnung von Google? Ohne eine Prüfung Deiner App durch Google muss der Anwender der Nutzung einer "unsicheren" App zustimmen - ähnlich einem abgelaufenem SSL-Zertifikat. Diese Änderung ist erst vor 2 Wochen passiert.
Also alle alten API-Tokens sind damit ungültig. Wenn Du Dir einen neuen Token holst mit neuer Zustimmung, dann sollte es wieder klappen. Und dann sollte man auch deinen API-Zugriff durch Google mal prüfen lassen - über die Google Console.
Mit dem alten Token bekommt man nicht etwa eine Fehlermeldung, sondern man bekommt einfach keine Daten - Kalender nicht gefunden etc

Ich habe bei Google einen neuen Token angelegt und kann wieder auf den Kalender zugegriffen werden.
Vielen Dank für die Hilfen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf