Calcurse mit Google-Kalender synchronisieren

OsunSeyi

Well-Known Member
Eine Anleitung dafür findet sich hier:
Calcurse

Also bisher:
  • neue Google-Api erstellt
  • CalDAV und Google Calendar Api aktiviert
  • OAuth client ID erstellt:
  • Client-ID und ClientSecret (Key) erhalten

Auf OBSD:
  • calcurse-4.8.0p0v0
  • py3-pip-23.0.1
  • pip3 install --user oauth2client

~/.config/calcurse/caldav/config:

Code:
[General]
    Binary = calcurse
  Hostname = apidata.googleusercontent.com
      Path = /caldav/v2/meine@email.de/events/
AuthMethod = oauth2
SyncFilter = cal
     HTTPS = Yes
    DryRun = No
   Verbose = Yes

[OAuth2]
    ClientID =...........ap.apps.googleusercontent.com
ClientSecret =...............
       Scope = https://www.googleapis.com/auth/calendar
 RedirectURI = http://127.0.0.1

Der Aufruf:

Code:
calcurse-caldav --init keep-remote --authcode '............'

Connecting to apidata.googleusercontent.com...
Traceback (most recent call last):
  File "/usr/local/bin/calcurse-caldav", line 740, in <module>
    cred = run_auth(authcode)
  File "/usr/local/bin/calcurse-caldav", line 276, in run_auth
    credentials = init_auth(client_id, client_secret, scope, redirect_uri, authcode)
  File "/usr/local/bin/calcurse-caldav", line 246, in init_auth
    credentials = oauth2_client.step2_exchange(authcode)
  File "/home/tom/.local/lib/python3.10/site-packages/oauth2client/_helpers.py", line 133, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "/home/tom/.local/lib/python3.10/site-packages/oauth2client/client.py", line 2089, in step2_exchange
    raise FlowExchangeError(error_msg)

oauth2client.client.FlowExchangeError: invalid_clientUnauthorized

Habe schon verschiedentlich gegoogelt, woran es liegen könnte und bin nicht weitergekommen.
Vielleicht ist jemand unter uns, der Ahnung von dem Teil hat...

Die ID und den Key habe ich mehrfach kontrolliert, die stimmen.
Aber vielleicht fehlt irgendetwas in der Google-API oder die Config ist verkehrt?
 
Ich bin nicht mehr bei google, aber für so Sachen musste man im jeweiligen google-acc 'unsichere Geräte/Software' o.ä. zulassen anklicken. Das gab dann ein Zeitfenster von einigen Minuten, google hat sich dann den Zugriff gemerkt und als vertrauenswürdig eingestuft.
Ka, ob es das noch gibt, oder ob alles ohne Doppelfaktor jetzt raus ist.
 
CALCURSE-11-1.png

Ka, ob es das noch gibt, oder ob alles ohne Doppelfaktor jetzt raus ist.

Ich habe nochmal alles durchgeschaut und habe das so nicht gefunden.
 
Ich habe nochmal den Aufruf so probiert:

Code:
calcurse-caldav --init keep-remote

Es öffnet sich der Webbrowser zur Google-Anmeldung:

Fehler bei der Autorisierung
Fehler 403: access_denied

The developer hasn’t given you access to this app.
It’s currently being tested and it hasn’t been verified by Google.
If you think you should have access, contact the developer (email.de).

Der Inhalt dieses Abschnitts stammt vom App-Entwickler.
Er wurde nicht von Google überprüft oder verifiziert.
Wenn Sie der App-Entwickler sind, sorgen Sie dafür, dass diese Anfragedetails den Google-Richtlinien entsprechen.
Code:
    access_type:   offline
    response_type: code
    redirect_uri:  http://127.0.0.1
    client_id:     ...........ap.apps.googleusercontent.com
    scope:         https://www.googleapis.com/auth/calendar

"Weitere Forschungen ergaben...": Error 403 - access denied from google acc
  • auf "OAuth-Zustimmungebildschirm"
  • Testnutzer "+ ADD USERS"
  • Email angeben
Wiederrum calcurse-caldav --init keep-remote

Browserfenster öffnet sich und schon besser:

CALCURSE benötigt Zugriff auf Ihr Google-Konto

Dadurch erhält CALCURSE diese Berechtigungen:
Alle Kalender, die über Google Kalender verfügbar sind, aufrufen, bearbeiten, freigeben und endgültig löschen

[zulassen]

Dieses ausgeführt führt zu

Code:
Failed to Connect

The connection was refused when attempting to contact 127.0.0.1.

Though the site seems valid, the browser was unable to establish a connection.

    Could the site be temporarily unavailable? Try again later.
    Are you unable to browse other sites? Check the computer’s network connection.
    Is your computer or network protected by a firewall or proxy? Incorrect settings can interfere with Web browsing.

Auf der Konsole auch eine Fehlermeldung (Ich glaube, der ist normal):
error: Access token is missing or refresh token is expired.

Ich habe es in der Calcurse CalDAV-Config auch mit 'localhost' probiert, das wird von Google aber nicht erlaubt.
Hat es nicht möglicherweise mit den lokalen Einstellungen (Router?) zu tun?
 
Zuletzt bearbeitet:
OK, und noch weiter:

Laut der Caldav-Doku soll folgendes Unternommen werden:

Nach dem Aufruf calcurse-caldav --init keep-remote sich Anmelden.
Nach der Anmeldung kommt:

The connection was refused when attempting to contact 127.0.0.1. (siehe oben)

Nun die URL kopieren, sie sieht so aus:

https://127.0.0.1/?code=.......&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar

Hiervon alles zwischen ?code= und &scope= herauskopieren.
Das wäre: 4%2F0AfJoh....

%sF ist der /

Also soll jetzt so aufgerufen werden:

calcurse-caldav --init keep-remote --authcode '4/0AfJoh........'

Das entspricht dem Beispiel aus der Anleitung auf GIT
Dort ist allerdings am Ende des authcode ein '#', ich habe das vorsichtshalber auch probiert.

Ergebnis nach wie vor:

oauth2client.client.FlowExchangeError: invalid_clientUnauthorized
 
OK, und noch weiter:

Laut der Caldav-Doku soll folgendes Unternommen werden:

Nach dem Aufruf calcurse-caldav --init keep-remote~ sich Anmelden.
Nach der Anmeldung kommt:

The connection was refused when attempting to contact 127.0.0.1. (siehe oben)

Nun die URL kopieren, sie sieht so aus:

https://127.0.0.1/?code=.......&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar

Hiervon alles zwischen ?code= und &scope= herauskopieren.
Das wäre: 4%2F0AfJoh....

%sF ist der /

Also soll jetzt so aufgerufen werden:

calcurse-caldav --init keep-remote --authcode '4/0AfJoh........'

Das entspricht dem Beispiel aus der Anleitung auf GIT.
Dort ist allerdings am Ende des authcode ein '#', ich habe das vorsichtshalber auch probiert.

Ergebnis allerdings nach wie vor:

oauth2client.client.FlowExchangeError: invalid_clientUnauthorized

Wenn ich http://127.0.0.1/ 'as is' im Browser aufrufe, kommt allerdings dieselbe Fehlermeldung.
 
127.0.0.1 ist localhost, darauf kann weder google noch sonst jemand 'anderes' connecten.

Browserfenster öffnet sich und schon besser:

CALCURSE benötigt Zugriff auf Ihr Google-Konto

Dadurch erhält CALCURSE diese Berechtigungen:
Alle Kalender, die über Google Kalender verfügbar sind, aufrufen, bearbeiten, freigeben und endgültig löschen

[zulassen]


Dieses ausgeführt führt zu
Das ist aber schon die richtige Richtung....
 
~/.config/calcurse/caldav/config:

Code:
[General]
Binary = calcurse
Hostname = apidata.googleusercontent.com
Path = /caldav/v2/meine@email.de/events/
AuthMethod = oauth2
SyncFilter = cal
HTTPS = Yes
DryRun = No
Verbose = Yes

[OAuth2]
ClientID =...........ap.apps.googleusercontent.com
ClientSecret =...............
Scope = https://www.googleapis.com/auth/calendar
RedirectURI = http://127.0.0.1

Das ist der Eintrag in der Caldav-Config und konnte früher auch 'localhost' sein (Was Google nicht mehr erlaubt, wird in der Anmeldung als 'unerlaubter Eintrag' zurückgegeben).

Es ist auch die Fehlermeldung im Browser nach der Erteilung der Berechtigung bei Google.

Die Konsole gibt aus:

Code:
oauth2client.client.FlowExchangeError: invalid_clientUnauthorized
 
Zuletzt bearbeitet:
STACK

Hier sind jede Menge Issues beschrieben, bis dahin, bei Google alles neu aufzulegen und weiter.
Das ist nun aber wieder so ein Beispiel, wo ich persönlich aufgeben muss...

Weil es eben nicht vertretbar ist, einen ganzen Tag für eine Sache zu "versenken", die dann zuletzt doch nicht klappt...
sigh...

Weil man nicht weiß, ob man nicht getrost noch zwei Tage drauf packen kann und es geht halt immer noch nicht...
Das kommt davon, wenn man alles mit einer Art Halbwissen macht. Hatte dasselbe ja schon mit dem Drucker,
aber da ist es ja jetzt ok (via SSH).

Natürlich kein Problem von OBSD, das ist schon klar. :)
 
Das ist jetzt mal halb geraten, aus der Erinnerung heraus. Es gab tief in den Optionen des gmail/google-Kontos diese besagte Option 'unsichere Apps' zulassen. Damals bei der Einführung brauchte man das nur aktivieren und konnte wieder mit jedem x-beliebigen Client verbinden. IMAP/SMTP/CALDAV/CARDDAV...etc.
Irgendwann änderte sich das, sodass man es aktivieren musste und dann ein Zeitfenster ablief, um den Client connecten. Google merkte sich das anhand einiger Merkmale, sodass der fortan gewhitelisted wurde.
Dann oder parallel dazu wurde dann diese 2-faktor Authentifizierung als erforderlich geschaltet. Ebenso hatte google dazu eine Art presets für gängigste Clients wie Thunderbird oder Outlook.
War dieser Schalter für unsichere Apps deaktiviert und hatte einen solchen Client mit preset erstmalig verbinden lassen, ging ein Browserfenster auf...das war dieses 'xxx benötigt Zugriff aufs Konto etc.' Das konnte man dann abnicken, google hat sich das gemerkt und man konnte sich verbinden.

Ob das jetzt alles noch so ist, kann ich dir nicht sagen. Wenn du jetzt aber sagst, dass es bei dir auch im Browser schon nicht funktioniert, würde ich davon ausgehen, dass das 'erlauben' nicht sauber durchlief.
Ich würde jetzt einfach mal den Thunderbird dazu nehmen und damit versuchen, den Kalender reinzubekommen...weil ich das in der Vergangenheit so hatte und du dann die Schritte auch mal googleseitig exakt siehst. Da müsste dann eine Infomail kommen "neues Gerät angemeldet bla...Waren Sie das?" und in den Untiefen der Menüs im Konto müsstest du eine Auflistung aller Apps sehen, die sich jemals erfolgreich angemeldet haben.
 
Gibts villeicht ein nettes anderes Programm das den einfach unterstützt? Villeicht Seamonkeys Kalender?
Habe seamonkey-lightning probiert, das ist im Repo:
Aber weder standalone starten scheint möglich zu sein, noch eine Anbindung an Google.
Dafür muß es wohl die Thunderbird-Erweiterung sein.

Eigentlich ist calcurse ein chices Programm, sehr flott.

Wenn du jetzt aber sagst, dass es bei dir auch im Browser schon nicht funktioniert

Oh nein, das ist ein Missverständnis. Sie funktionieren.
Ich hebe auf Comm Zed's Bewertung von Browsern auf T60 ab.
Das ist wirklich was für Masochisten...
 
Insgesamt sehen die Ausgaben, unabhängig von dem invalid_Clientunauthorized, nach einem oauth2 authentication_code Flow aus. Ich hab erst die Tage ein wenig mit keycloak herum gespielt und diesen Mechanismus via Skript umgesetzt. In meinem Fall war allerdings zusätzlich Kerberos im Spiel, aber für das grundsätzliche Verständnis des Ablaufs des authentication_code flows war vor allem diese Seite hilfreich:


Ich gehe hier einfach davon aus, dass Tante google hier keine von oauth2 abweichenden Wege geht, daher könnte ein Test mit diesem Skript als Basis Hilfe beim Debugging geben.
 
Tachen :),

ich nutze zwar nicht den Kalender von Google, vielleicht kann ich trotzdem jemandem helfen. :) Ich nutze calcurse mit posteo.de.

Es gibt zwar die eine und andere Software die beim syncen ein bisserl jammert, weil die Daten nicht korrekt sind und dennoch werden alle Termine in der jeweiligen Software (android -> aCalendar+; linux -> thunderbird) dargestellt. (Das Jammern rührt meines Erachtens daher, dass es bei Terminen, die über 24:00Uhr hinausgehen, zu "Unstimmigkeiten" zwischen der jeweils genutzen Software kommt.)

Hier meine config für posteo.de. (Hier läuft OpenBSD auf dem Laptop.)

Bash:
roadrunner ~/.calcurse > cat caldav/config|grep -v '^#'

[General]
Binary = calcurse

Hostname = posteo.de:8443
Path = /calendars/$USER/default/
AuthMethod = basic

InsecureSSL = No

HTTPS = Yes

SyncFilter = cal,todo

DryRun = No

Verbose = Yes

[Auth]
Username = $USER@posteo.de
Password = SUPerGeHeimesPassWort

Bei mir läuft das so: Termine werden auf roadrunner erstellt und nach posteo.de gesynct. Smartphone und Computer zu Hause holen sich die Daten dann von posteo.de (Smartphone + android - macht mglw. die Installation von DAV x5 erforderlich.)



Beste Grüße
Jonas
 
Ja vielen Dank...
bin noch nicht dazu gekommen es zu probieren, aber das hört sich gut und nach einer praktikablen Lösung an!
Ich werde davon berichten.

Klar, der Kalender auf dem Smartphone muß es auch können.
CalenGoo heißt das Teil und ist absolut empfehlenswert!

roadrunner ??? Bin gerade am googeln...
oki, Deine Kiste heißt so :-))
wie nett
 
Zurück
Oben