Comment utiliser OAuth et API de compte de service avec le client API Google pour python

0. Introduction

Comment utiliser OAuth et l'API avec le client API Google pour python. Cette fois, le compte de service est utilisé pour l'authentification et l'API cible Calendar.

Page d'explication sur la certification officielle de Google. Using OAuth 2.0 for Server to Server Applications

1. Préparation

Obtenir le client API Google

J'utiliserai ceci. google/google-api-python-client

Installez avec pip.

$ pip install --upgrade google-api-python-client

Google Developers Console

Tout d'abord, créez un compte de service dans la Google Developers Console.

  1. Créez un projet
  2. Activez le calendrier en sélectionnant [API et authentification] → [API] * Définissez l'écran de consentement OAuth
  3. Créez en sélectionnant [API et authentification] → [Credentials] → [Add Credentials] → [Service Account] → [p12] et enregistrez le fichier "~ .p12] * JSON est également acceptable

Console de gestion

Définissez les autorisations de l'API dans la Console d'administration.

oauth2client.client.AccessTokenRefreshError: access_denied: Requested client not authorized.
  1. [Sécurité] → [Plus] → [Avancé] → [Gérer l'accès client API]
  2. Entrez le "ID client" (.apps.googleusercontent.com) créé dans la Developers Console dans [Nom du client] * Notez qu'il ne s'agit pas d'une adresse e-mail.
  3. Saisissez "https://www.googleapis.com/auth/calendar, https://www.googleapis.com/auth/calendar.readonly" dans une ou plusieurs plages d'API.
  4. Appuyez sur [Approuver]

2. Créer un module

google_auth.py



import json

from httplib2 import Http

from oauth2client.client import SignedJwtAssertionCredentials
from googleapiclient.discovery import build

#Adresse e-mail du compte de service
client_email = '[email protected]'

#Certification de la version p12
fileName = "./project.p12"

with open(fileName, 'rb') as f:
    private_key = f.read()

credentials = SignedJwtAssertionCredentials(client_email, private_key,
        'https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/calendar.readonly'
    ,sub='[email protected]')

#certification de version json
#fileName = "./project.json"
#json_key = json.load(open(fileName))

#credentials = SignedJwtAssertionCredentials(json_key['client_email'], json_key['private_key'],
#   'https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/calendar.readonly'
#    ,sub='[email protected]')


http = Http()
credentials.authorize(http)

# Calendar API
from apiclient.discovery import build

calendar_service = build('calendar', 'v3', http=http)

calendar_list = calendar_service.calendarList().get(calendarId='[email protected]').execute()

print calendar_list['summary']

Résultat d'exécution)

[email protected]

Remarques)

  1. Si vous ne définissez pas sub = 'email address' dans l'argument de SignedJwtAssertionCredentials, vous ne pourrez pas accéder à l'API avec l'erreur suivante.
googleapiclient.errors.HttpError: <HttpError 404 when requesting https://www.googleapis.com/calendar/v3/users/me/calendarList/info%40example.com?alt=json returned "Not Found">

URL de référence

  1. https://developers.google.com/api-client-library/python/auth/service-accounts?hl=ja

  2. http://stackoverflow.com/questions/21407985/google-calendar-api-404-on-calendar-service-account

  3. http://kb.cloudiway.com/errorunauthorized_client-descriptionunauthorized-client-or-scope-in-request-uri/

c'est tout.

Recommended Posts

Comment utiliser OAuth et API de compte de service avec le client API Google pour python
[BigQuery] Comment utiliser l'API de BigQuery pour Python -Création de table-
Python: comment utiliser async avec
Comment utiliser l'API Python d'OpenPose
[Python] Comment utiliser l'API Typetalk
API Nifty Cloud facile à utiliser avec botocore et python
Obtenez des données de l'API d'analyse avec le client API Google pour python
Exemple à utiliser après l'authentification OAuth de l'API BOX avec Python
[Python] Organisation de l'utilisation des instructions
Comment utiliser un éditeur externe pour le développement Python avec Grasshopper
python: Comment utiliser les locals () et globals ()
Comment utiliser "deque" pour les données Python
Comment utiliser le zip Python et énumérer
Comment utiliser is et == en Python
Comment gérer l'erreur OAuth2 lors de l'utilisation des API Google à partir de Python
Modifier la diapositive (Powerpo pour Google) avec Python (cas RPA à faible coût avec API Google et Python)
Comment utiliser l'API Google Cloud Translation
Comment utiliser tkinter avec python dans pyenv
[Python] Comment utiliser la fonction de hachage et taple.
OpenGoddard Comment utiliser la bibliothèque 2-python pour un contrôle optimal non linéaire et la génération de trajectoires
Acquisition de données à partir de l'API d'analyse avec l'application Web Client API Google pour python Partie 2
Conseils pour ceux qui ne savent pas comment utiliser is et == en Python
Comment utiliser la bibliothèque OpenGoddard 3-python pour un contrôle optimal non linéaire et la génération de trajectoires
Comment utiliser la bibliothèque OpenGoddard 4-python pour un contrôle optimal non linéaire et la génération de trajectoires
Comment utiliser la bibliothèque OpenGoddard 1-python pour un contrôle optimal non linéaire et la génération de trajectoires
[Pour les débutants] Comment utiliser la commande say avec python!
[Python] [Django] Comment utiliser le champ de choix et comment ajouter des options
Comment utiliser le mode interactif python avec git bash
Comment analyser avec Google Colaboratory à l'aide de l'API Kaggle
Comment utiliser Django avec Google App Engine / Python
Python # Comment vérifier le type et le type pour les super débutants
Comment faire fonctionner l'API Discord avec Python (enregistrement de bot)
Installez tweepy avec pip et utilisez-le pour l'API 1.1
Utiliser l'API Twitter avec Python
[Python] Comment utiliser la liste 1
Vérifiez! Comment utiliser Azure Key Vault avec Azure SDK pour Python! (Mesures autour de la certification)
Comment utiliser Python Argparse
Python: comment utiliser pydub
[Python] Comment utiliser checkio
Utiliser l'API subsonique avec python3
[Python] Comment utiliser input ()
Comment utiliser Python lambda
[Python] Comment utiliser virtualenv
python3: Comment utiliser la bouteille (3)
python3: Comment utiliser la bouteille
Comment utiliser Google Colaboratory
Comment utiliser les octets Python
[python] Comment utiliser Matplotlib, une bibliothèque pour dessiner des graphiques
Comment utiliser le wrapper Python PyRealsense de Realsense avec Jetson Nano
Comment extraire n'importe quel rendez-vous dans Google Agenda avec Python
[Python] Comment jouer avec les variables de classe avec décorateur et métaclasse
[Introduction à l'application Udemy Python3 +] 36. Utilisation de In et Not
Méthode d'apprentissage TensorFlow pour les professionnels des arts libéraux et les débutants en Python
[Python] Résumé de l'utilisation des fonctions de fractionnement et de jointure
Comment utiliser l'apprentissage automatique pour le travail? 03_Procédure de codage Python
Comparaison de l'utilisation des fonctions d'ordre supérieur dans Python 2 et 3
Je ne savais pas comment utiliser l'instruction [python] for
Comment se connecter à AtCoder avec Python et soumettre automatiquement