[google-oauth] [python] Bibliothèque cliente des API Google pour Python

google-oauth on python

Essayez d'implémenter OpenID Connect avec python. Translittérer la documentation Google pour comprendre comment la mettre en œuvre.

OAuth 2.0 explained

Un aperçu d'OAuth 2.0. réduction.

Acquiring client IDs and secrets

Veuillez noter qu'il existe trois types d'identifiants clients.

The oauth2client library

La bibliothèque ** oauth2client ** est incluse dans la bibliothèque cliente des API Google (Python). Cette bibliothèque contrôle le protocole OAuth 2.0 pour appeler les API à toutes les étapes.

Flows

La classe Flow donne à l'application l'autorisation d'accéder aux données utilisateur. Les fonctions d'objet de flux aident avec les multiples redirections requises pour l'acquisition de données. L'objet Flow a des informations d'identification mais est jetable. Les informations d'identification peuvent être extraites et enregistrées. Il existe de nombreuses façons d'utiliser l'objet Flow.

flow_from_clientsecrets()

** oauth2client.client.flow_from_clientsecrets () ** crée un objet Flow à partir du fichier ** client_secrets.json **. Ce fichier au format JSON stocke l'ID client, le secret client et les paramètres OAuth 2.0.

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

La classe ** oauth2client.client.OAuth2WebServerFlow ** peut être utilisée dans les applications installées et Web. Les arguments du constructeur sont l'ID client, le secret client, la portée et l'URI de redirection. L'URI doit être contrôlé par votre application.

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()

Générez un URI pour le serveur d'authentification. Redirection lorsque l'authentification est terminée à la fin de l'URI.

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

Si vous êtes un utilisateur autorisé, le serveur redirigera immédiatement. S'il n'est pas authentifié, le serveur d'authentification demande à l'utilisateur des autorisations de données. Si l'utilisateur vous donne accès aux données, le serveur renvoie ** redirect_uri ** avec une requête ** code **.

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

Si l'utilisateur n'accorde pas l'accès, ** redirect_uri ** renvoie une requête ** error **.

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

step2_exchange()

La fonction ** step2_exchange () ** change la classe Flow en un objet ** Credentials **. Passez le ** code ** reçu par le serveur d'authentification comme argument.

credentials = flow.step2_exchange(code)

Credentials

L'objet Credentials contient un ** jeton d'actualisation ** et un ** jeton d'accès ** qui accèdent aux données d'un seul utilisateur. Cet objet adapte l'objet * httplib2.Http * pour l'autorisation d'accès. Il ne doit être appliqué qu'une seule fois et peut être enregistré après l'authentification. Voici quelques façons de créer un objet Credentials.

OAuth2Credentials

La classe ** oauth2client.client.OAuth2Credentials ** contient les informations d'identification OAuth 2.0 pour accéder aux données utilisateur. Normalement, cet objet n'est pas créé à partir du constructeur. Il peut être créé à partir d'un objet Flow.

ServiceAccountCredentials

La classe ** oauth2client.service_account.ServiceAccountCredentials ** est utilisée uniquement pour les comptes de service OAuth 2.0. Cela n'a pas d'importance car l'utilisateur final n'appelle pas l'API utilisée pour communiquer entre les serveurs. Par conséquent, cet objet est créé directement sans passer par Flow.

AccessTokenCredentials

Utilisez la classe ** oauth2client.client.AccessTokenCredentials ** si vous avez déjà acquis des jetons d'accès pour une raison quelconque. Vous pouvez créer cet objet sans passer par l'objet Flow.

authorize()

La fonction ** authorize () ** de la classe ** Credentials ** est utilisée pour appliquer l'en-tête d'authentification de l'instance httplib2.Http à toutes les requêtes.

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

Si l'objet httplib2.Http est déjà authentifié, il est généralement transmis à l'aide de la fonction ** build **.

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

Storage

L'objet ** oauth2client.client.Storage ** stocke et récupère les ** Credentials **. Explique comment créer un objet et comment l'utiliser.

file.Storage

La classe ** oauth2client.file.Storage ** peut stocker et récupérer une classe ** Credentials **. Prend en charge le traitement parallèle pour un stockage unique. Vous trouverez ci-dessous comment ouvrir le fichier, comment enregistrer les informations d'identification et comment le récupérer.

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

Recommended Posts

[google-oauth] [python] Bibliothèque cliente des API Google pour Python
Obtenez des données de l'API d'analyse avec le client API Google pour python
<Pour les débutants> bibliothèque python <Pour l'apprentissage automatique>
Exemple d'API Google Cloud Vision pour python
30/10/2016 else pour Python3> pour:
Bibliothèque de messagerie Python 3.6
python [pour moi]
Bibliothèque Python AST
Acquisition de données à partir de l'API d'analyse avec l'application Web Client API Google pour python Partie 2
Tweet (API 1.1) avec Google App Engine pour Python
Comment utiliser OAuth et API de compte de service avec le client API Google pour python
Note sur la bibliothèque Python
Appelez la bibliothèque Python pour la normalisation de texte depuis MATLAB
[GoogleCloudPlatform] Utiliser l'API Google Cloud avec la bibliothèque cliente d'API
Installez psycopg2 (bibliothèque pgsql pour python3) sur Apple Silicon
Erreur python d'aujourd'hui: HTTPError: 404 Erreur du client: introuvable pour l'url:
PIL en Python sur Windows8 (pour Google App Engine)
Premiers pas avec Google App Engine pour Python et PHP
Achat intégré à l'application pour la bibliothèque de facturation Android Google Play 2.0
À propos de Python for loop
Bases de Python ② pour déclaration
Configuration du client Python StatsD
bibliothèque de commerce d'algorithmes python
Utiliser le client LiquidTap Python ③
À propos de Python, pour ~ (plage)
Installer une bibliothèque externe pour python
Manuel python pour les débutants
Refactoring des outils utilisables avec Python
Toolchain pour Python pour Android
Bibliothèque d'optimisation Python Pulp
Utiliser le client LiquidTap Python ②
OpenCV pour les débutants en Python
Installez Python (pour Windows)
[Python] pour une erreur d'instruction
Maintenance de l'environnement Python pour les projets
Utiliser le client LiquidTap Python ①
Utiliser IvyFEM (bibliothèque de méthodes d'éléments finis pour .NET) à partir de Python
Bibliothèque standard de journalisation Python pour la sortie de fichier par niveau de journal
[python] Comment utiliser Matplotlib, une bibliothèque pour dessiner des graphiques
Accédez aux feuilles de calcul Google en utilisant python avec raspberry pi (pour vous-même)
■ Kaggle Practice pour les débutants - Introduction de Python - par Google Colaboratory
Un exemple pour dessiner des points avec PIL (Python Imaging Library).
[Python] Les principales faiblesses et inconvénients de Google Colaboratory [Pour les débutants]
Bibliothèque pour spécifier un serveur de noms en python et dig
Google recherche la chaîne sur la dernière ligne du fichier en Python
Appeler les API Google G Suite (Sheets / Slides, etc.) avec Python
Jouez avec l'API de données YouTube v3 à l'aide du client Python de l'API Google