[google-oauth] [python] Google APIs-Clientbibliothek für Python

google-oauth on python

Versuchen Sie, OpenID Connect mit Python zu implementieren. Transliterieren Sie die Google-Dokumentation, um zu verstehen, wie sie implementiert wird.

OAuth 2.0 explained

Ein Überblick über OAuth 2.0. Kürzung.

Acquiring client IDs and secrets

Bitte beachten Sie, dass es drei Arten von Client-IDs gibt.

The oauth2client library

Die ** oauth2client ** -Bibliothek ist in der Google APIs Client Library (Python) enthalten. Diese Bibliothek steuert das OAuth 2.0-Protokoll zum Aufrufen von APIs in allen Schritten.

Flows

Die Flow-Klasse gibt der App die Berechtigung, auf Benutzerdaten zuzugreifen. Flow-Objektfunktionen helfen bei den mehreren Umleitungen, die für die Datenerfassung erforderlich sind. Das Flow-Objekt verfügt über Anmeldeinformationen, ist jedoch verfügbar. Die Anmeldeinformationen können extrahiert und gespeichert werden. Es gibt viele Möglichkeiten, das Flow-Objekt zu verwenden.

flow_from_clientsecrets()

** oauth2client.client.flow_from_clientsecrets () ** erstellt ein Flow-Objekt aus der Datei ** client_secrets.json **. Diese Datei im JSON-Format speichert die Client-ID, das Client-Geheimnis und die OAuth 2.0-Parameter.

from oauth2client.client import flow_from_clientsecrets
...
flow = flow_from_clientsecrets('path_to_directory/client_secrets.json',
                               scope='https://www.googleapis.com/auth/calendar',
                               redirect_uri='http://example.com/auth_return')

OAuth2WebServerFlow

Die Klasse ** oauth2client.client.OAuth2WebServerFlow ** kann sowohl in installierten als auch in Web-Apps verwendet werden. Die Konstruktorargumente sind Client-ID, Client-Geheimnis, Bereich und Umleitungs-URI. Der URI muss von Ihrer App gesteuert werden.

from oauth2client.client import OAuth2WebServerFlow
...
flow = OAuth2WebServerFlow(client_id='your_client_id',
                           client_secret='your_client_secret',
                           scope='https://www.googleapis.com/auth/calendar',
                           redirect_uri='http://example.com/auth_return')

step1_get_authorize_url()

Generieren Sie einen URI für den Authentifizierungsserver. Umleiten, wenn die Authentifizierung am Ende des URI abgeschlossen ist.

auth_uri = flow.step1_get_authorize_url()
# Redirect the user to auth_uri on your platform.

Wenn Sie ein autorisierter Benutzer sind, wird der Server sofort umgeleitet. Wenn nicht authentifiziert, fragt der Authentifizierungsserver den Benutzer nach Datenberechtigungen. Wenn der Benutzer Ihnen Datenzugriff gewährt, gibt der Server ** redirect_uri ** mit einer ** Code ** -Abfrage zurück.

http://example.com/auth_return/?code=kACAH-1Ng1MImB...AA7acjdY9pTD9M

Wenn der Benutzer keinen Zugriff gewährt, gibt ** redirect_uri ** eine ** Fehlerabfrage ** zurück.

http://example.com/auth_return/?error=access_denied

step2_exchange()

Die Funktion ** step2_exchange () ** ändert die Flow-Klasse in ein ** Credentials ** -Objekt. Übergeben Sie den vom Authentifizierungsserver empfangenen ** Code ** als Argument.

credentials = flow.step2_exchange(code)

Credentials

Das Anmeldeinformationsobjekt enthält ein ** Aktualisierungstoken ** und ein ** Zugriffstoken **, die auf die Daten eines einzelnen Benutzers zugreifen. Dieses Objekt passt das Objekt * httplib2.Http * für die Zugriffsberechtigung an. Es muss nur einmal angewendet werden und kann nach der Authentifizierung gespeichert werden. Hier sind einige Möglichkeiten, um ein Anmeldeinformationsobjekt zu erstellen.

OAuth2Credentials

Die Klasse ** oauth2client.client.OAuth2Credentials ** enthält OAuth 2.0-Anmeldeinformationen für den Zugriff auf Benutzerdaten. Normalerweise wird dieses Objekt nicht vom Konstruktor erstellt. Es kann aus einem Flow-Objekt erstellt werden.

ServiceAccountCredentials

Die Klasse ** oauth2client.service_account.ServiceAccountCredentials ** wird nur für OAuth 2.0-Dienstkonten verwendet. Dies spielt keine Rolle, da der Endbenutzer die für die Kommunikation zwischen den Servern verwendete API nicht aufruft. Daher wird dieses Objekt direkt erstellt, ohne Flow zu durchlaufen.

AccessTokenCredentials

Verwenden Sie die Klasse ** oauth2client.client.AccessTokenCredentials **, wenn Sie aus irgendeinem Grund bereits Zugriffstoken erworben haben. Sie können dieses Objekt erstellen, ohne das Flow-Objekt zu durchlaufen.

authorize()

Die Funktion ** authorize () ** der Klasse ** Credentials ** wird verwendet, um den Authentifizierungsheader von der Instanz httplib2.Http auf alle Anforderungen anzuwenden.

import httplib2
...
http = httplib2.Http()
http = credentials.authorize(http)

Wenn das httplib2.Http-Objekt bereits authentifiziert ist, wird es im Allgemeinen mit der Funktion ** build ** übergeben.

from apiclient.discovery import build
...
service = build('calendar', 'v3', http=http)

Storage

Das Objekt ** oauth2client.client.Storage ** speichert und ruft ** Anmeldeinformationen ** ab. Erklärt, wie ein Objekt erstellt und verwendet wird.

file.Storage

Die Klasse ** oauth2client.file.Storage ** kann eine Klasse ** Credentials ** speichern und abrufen. Unterstützt die parallele Verarbeitung für einen einzelnen Speicher. Im Folgenden erfahren Sie, wie Sie die Datei öffnen, Anmeldeinformationen speichern und abrufen.

from oauth2client.file import Storage
...
storage = Storage('a_credentials_file')
storage.put(credentials)
...
credentials = storage.get()

Recommended Posts

[google-oauth] [python] Google APIs-Clientbibliothek für Python
Abrufen von Daten aus der Analyse-API mit Google API Client für Python
<Für Anfänger> Python-Bibliothek <Für maschinelles Lernen>
Google Cloud Vision API-Beispiel für Python
2016-10-30 sonst für Python3> für:
Python 3.6 E-Mail-Bibliothek
Python [für mich]
Python ast Bibliothek
Datenerfassung von der Analytics-API mit dem Google API-Client für die Python Part 2-Webanwendung
Tweet (API 1.1) mit Google App Engine für Python
Verwendung von OAuth und API für Dienstkonten mit Google API Client für Python
Python Library Hinweis
Rufen Sie die Python-Bibliothek zur Textnormalisierung in MATLAB auf
[GoogleCloudPlatform] Verwenden Sie die Google Cloud-API mit der API-Clientbibliothek
Installieren Sie psycopg2 (pgsql-Bibliothek für Python3) auf Apple Silicon
Heutiger Python-Fehler: HTTPError: 404 Client-Fehler: Nicht gefunden für URL:
PIL in Python unter Windows8 (für Google App Engine)
Erste Schritte mit Google App Engine für Python und PHP
In-App-Kauf für Android Google Play Billing Library 2.0 implementiert
Über Python für Schleife
Python-Grundlagen ② für Anweisung
Python StatsD-Clientkonfiguration
Python-Algorithmus Handelsbibliothek
Verwenden Sie LiquidTap Python Client ③
Über Python für ~ (Bereich)
Installieren einer externen Bibliothek für Python
Python Lehrbuch für Anfänger
Refactoring-Tools, die mit Python verwendet werden können
Toolchain für Python für Android
Python-Optimierungsbibliothek Pulp
Verwenden Sie LiquidTap Python Client ②
OpenCV für Python-Anfänger
Installieren Sie Python (für Windows)
[Python] für Anweisungsfehler
Wartung der Python-Umgebung für Projekte
Verwenden Sie LiquidTap Python Client ①
Verwenden Sie IvyFEM (Finite-Elemente-Methodenbibliothek für .NET) aus Python
Python-Protokollierungsstandardbibliothek für die Dateiausgabe nach Protokollebene
[Python] Verwendung von Matplotlib, einer Bibliothek zum Zeichnen von Diagrammen
Zugriff auf Google Spreadsheets Verwenden von Python mit Himbeer-Pi (für sich selbst)
■ Kaggle-Übung für Anfänger - Einführung von Python - von Google Colaboratory
Ein Beispiel zum Zeichnen von Punkten mit PIL (Python Imaging Library).
[Python] Die größten Schwächen und Nachteile von Google Colaboratory [Für Anfänger]
Bibliothek zur Angabe eines Nameservers in Python und Dig
Google sucht mit Python nach der Zeichenfolge in der letzten Zeile der Datei
Rufen Sie mit Python Google G Suite-APIs (Blätter / Folien usw.) auf
Spielen Sie mit der YouTube Data API v3 mit dem Google API Python Client