Seit Aktivierung der 2-Faktor-Authentifizierung (auch als Bestätigung in zwei Schritten) bei Google funktionieren meine Google-Exportskripte nicht mehr. Der Computer ist verifiziert und vertraut, aber irgendwie sind die Skripte nicht. Jedes Mal, wenn der Cron-Job ausgeführt wird, erhalte ich einen neuen "Google-Bestätigungscode", und das Skript schlägt fehl. Ich nehme an, es sollte eine einfache Angelegenheit sein, solche Skripte ein für allemal mit wget
oder curl
zu authentifizieren, aber ich konnte keine Dokumentation dafür finden.
Google-Authentifizierungsschemata haben viele Iterationen durchlaufen, und ich kann mich nicht länger mit curl
oder mechanicalsoup
anmelden. Ich habe versucht, URLs wie https://accounts.google.com/ServiceLogin?continue=https://calendar.google.com/calendar/exporticalzip&[email protected]&Passwd=application-specific-password
zu verwenden und werde immer auf eine Login-Seite umgeleitet, normalerweise mit der Meldung "Bitte benutze dein Account-Passwort anstelle eines anwendungsspezifischen Passworts."
Sind Sie absolut sicher, dass Sie die 2-Faktor-Authentifizierung mit den Shell-Skripten verwenden möchten? Wenn dies der Fall ist, müssen Sie nicht versuchen, Ihren Computer oder Ihr Skript als "vertrauenswürdig" einzustufen. Sie tun nur die volle 2-Faktor-Authentifizierung jedes Mal, wenn Sie das Skript ausführen.
Wenn das Ziel darin besteht, die manuelle zweite Faktor-Authentifizierung zu überspringen, würde ich stattdessen vorschlagen, ein anwendungsspezifisches Passwort zu verwenden (wie bereits von anderen Antworten vorgeschlagen). Geben Sie einfach vor, dass Sie keine 2-Faktor-Authentifizierung verwenden und verwenden Sie Ihren echten Anmeldenamen, aber setzen Sie das Passwort auf eins, das unter Ссылка (Unterseite von Ссылка ).
Die Absicht ist, das anwendungsspezifische Passwort "Name" auf einen Wert zu setzen, der für Sie von Bedeutung ist. Zum Beispiel habe ich Passwörter mit der Aufschrift "Pidgin bei der Arbeit", "Mein Android Phone", "Thunderbird Google Adressbuch-Erweiterung bei der Arbeit" usw. Sie könnten eine für "Kalender und Reader Export Script" haben. Wenn Sie jemals glauben, dass dieses anwendungsspezifische Passwort kompromittiert ist ("leaked"), klicken Sie einfach auf den Link "Widerrufen" auf der gleichen Seite und generieren Sie dann ein neues Passwort für Ihr Skript.
Verwenden Sie für den Code einfach die letzte Version, die mit Google Single Factor Auth. Update: Da die ursprüngliche Frage die URL https://accounts.google.com/ServiceLogin
für die Initiierung des Sitzungs-Logins verwendet hat, wird die Anmeldung des Browsers praktisch vorgetäuscht. Google unterstützt dies jedoch offiziell nicht und während ich dies schreibe, scheint es, dass die Verwendung des anwendungsspezifischen Passworts für den normalen Login mit der Fehlermeldung "Bitte benutze dein Account-Passwort anstelle eines anwendungsspezifischen Passworts" enden sollte.
Eine Sache, die Sie über die Google 2-Faktor-Authentifizierung und den "vertrauenswürdigen Computer" wissen sollten, ist, dass die eigentliche Implementierung lediglich einen permanenten Cookie mit 30 Tagen Ablaufzeit zu Ihrem Browser hinzufügt. Vertrauenswürdiger Computer bedeutet nicht, dass Ihre IP-Adresse vertrauenswürdig war oder eine andere magische Verbindung erstellt wurde. Sofern Ihre Skripts den Cookie "vertrauenswürdiger Computer" nicht in Ihrem bevorzugten Browser erfassen, spielt es keine Rolle, ob Sie Ihren Computer jemals als vertrauenswürdig gekennzeichnet haben. (Das Google-Formular sollte nicht "Diesen Computer für 30 Tage erinnern" angeben, sondern "Diese Kombination aus Browser und Benutzerkonto 30 Tage lang verwenden (permanentes Cookie speichern)". Allerdings wurde das als zu technisch angesehen.)
>Update: (kopiert von meinem Kommentar unten) Die einzige offiziell unterstützte Methode (Server-zu-Server-Anwendungen) ist dokumentiert unter Ссылка . Es erfordert die Codierung der Anforderung durch OAuth / JWT und die Verwendung des privaten Dienstkontoschlüssels, der unter Ссылка erstellt wurde. Als Alternative könnten Sie die ClientLogin-Authentifizierung verwenden (bereits veraltet, Best-Effort-Service bis 2015).
Wenn Sie sich für OAuth entscheiden, sollten Sie sich Ссылка und
Erstellen Sie ein anwendungsspezifisches Passwort . Benutzerdokumentation , Entwicklerdokumentation .
Das Erstellen von anwendungsspezifischen Passwörtern funktioniert für meine Skripte. Sie müssen lediglich das Passwort erstellen und dann in Ihrem Skript, in dem Sie Ihr Google-Konto-Passwort haben, stattdessen das anwendungsspezifische Passwort eingeben.
Weitere Informationen zu anwendungsspezifischen Passwörtern finden Sie hier:
Anwendungsspezifische Passwörter
Hoffe das hilft !!
Tags und Links python security bash google-authentication