c't 3/2019
S. 166
Know-how
Google-Anmeldung mit OAuth2

Login deluxe

OAuth2-Authentifizierung mit Python

Wer auf APIs bei Google, Facebook oder GitHub zugreifen möchte, kommt um OAuth2 nicht herum. Das Login-Protokoll authentifiziert Anwendungen, indem es den Nutzer im Browser um Erlaubnis fragt. Damit geht sogar Zwei-Faktor-Authentifizierung.

Um auf Daten im Google-Account zuzugreifen, müssen sich Python-Programme per OAuth2 authentifizieren und vom Benutzer die Erlaubnis für den Zugriff einholen. Der Workflow dafür ist durchaus komplex [1], doch glücklicherweise hilft die requests_oauthlib kräftig mit, sodass das Login mit wenigen Zeilen Python-Code gelingt. In der Dokumentation (siehe ct.de/y31g) steht auch Beispielcode für die Anmeldung bei Facebook, Fitbit, GitHub und zahlreiche andere Dienste, die OAuth2 unterstützen.

Ist der Google-Account per Zwei-Faktor-Authentifizierung gesichert, fragt die Anmeldung auch den zweiten Faktor ab.

Die Bibliothek startet den Anmeldevorgang und liefert für Konsolenanwendungen die URL, mit der man anschließend auf einem beliebigen Rechner mit grafischem Browser die Anmeldung durchspielen kann. An deren Ende steht ein Code, den man einfach wieder in die Konsole kopiert. Für unsere Qt-Anwendung mit Zugriff auf Google Fit (siehe S. 168) haben wir direkt in der Anwendung ein Chromium-Widget angezeigt. Das spart Browser starten und Code kopieren. Den Trick dürfen Sie gern bei GitHub abschauen (siehe ct.de/y31g). In beiden Fällen speichert requests_oauthlib ein Zugangstoken intern und hält es auf Wunsch auch automatisch aktuell. Wer es in eine Datei schreibt, spart sich auch am nächsten Tag das Browserfenster.