Verwendung von OAuth und API für Dienstkonten mit Google API Client für Python

0. Einleitung

Verwendung von OAuth und API mit Google API Client für Python. Dieses Mal wird das Dienstkonto zur Authentifizierung verwendet und die API zielt auf den Kalender ab.

Erklärungsseite zur offiziellen Zertifizierung von Google. Using OAuth 2.0 for Server to Server Applications

1. Vorbereitung

Holen Sie sich den Google API Client

Ich werde das benutzen. google/google-api-python-client

Mit pip installieren.

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

Google Developers Console

Erstellen Sie zunächst ein Dienstkonto in der Google Developers Console.

  1. Erstellen Sie ein Projekt
  2. Aktivieren Sie den Kalender, indem Sie [API und Authentifizierung] → [API] auswählen. * Legen Sie den OAuth-Zustimmungsbildschirm fest
  3. Erstellen Sie durch Auswahl von [API und Authentifizierung] → [Anmeldeinformationen] → [Anmeldeinformationen hinzufügen] → [Dienstkonto] → [S. 12] und speichern Sie die Datei "~ .p12]. * JSON ist ebenfalls zulässig

Managementkonsole

Legen Sie die API-Berechtigungen in der [Administrationskonsole] fest (https://admin.google.com/).

oauth2client.client.AccessTokenRefreshError: access_denied: Requested client not authorized.
  1. [Sicherheit] → [Mehr] → [Erweitert] → [API-Clientzugriff verwalten]
  2. Geben Sie die "Client-ID" (.apps.googleusercontent.com) ein, die in der Entwicklerkonsole unter [Client-Name] erstellt wurde. * Beachten Sie, dass dies keine E-Mail-Adresse ist.
  3. Geben Sie "https://www.googleapis.com/auth/calendar, https://www.googleapis.com/auth/calendar.readonly" in einen oder mehrere API-Bereiche ein
  4. Drücken Sie [Genehmigen]

2. Erstellen eines Moduls

google_auth.py



import json

from httplib2 import Http

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

#E-Mail-Adresse des Dienstkontos
client_email = '[email protected]'

#p12 Versionszertifizierung
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]')

#json Versionszertifizierung
#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']

Ausführungsergebnis)

[email protected]

Vorsichtsmaßnahmen)

  1. Wenn Sie im Argument von SignedJwtAssertionCredentials nicht sub = 'email address' festlegen, können Sie mit dem folgenden Fehler nicht auf die API zugreifen.
googleapiclient.errors.HttpError: <HttpError 404 when requesting https://www.googleapis.com/calendar/v3/users/me/calendarList/info%40example.com?alt=json returned "Not Found">

Referenz-URL

  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/

das ist alles.

Recommended Posts

Verwendung von OAuth und API für Dienstkonten mit Google API Client für Python
[BigQuery] Verwendung der BigQuery-API für die Python-Tabellenerstellung-
Python: So verwenden Sie Async mit
Verwendung der Python-API von OpenPose
[Python] Verwendung der Typetalk-API
Einfache Verwendung der Nifty Cloud API mit Botocore und Python
Abrufen von Daten aus der Analyse-API mit Google API Client für Python
Beispiel zur Verwendung nach OAuth-Authentifizierung der BOX-API mit Python
[Python] Organisieren der Verwendung für Anweisungen
Verwendung eines externen Editors für die Python-Entwicklung mit Grasshopper
Python: Verwendung von Einheimischen () und Globalen ()
Verwendung von "deque" für Python-Daten
Verwendung von Python zip und Aufzählung
Verwendung ist und == in Python
Umgang mit OAuth2-Fehlern bei Verwendung von Google APIs aus Python
Folie bearbeiten (Powerpo für Google) mit Python (kostengünstiger RPA-Fall mit Google API und Python)
Verwendung der Google Cloud Translation API
Wie man tkinter mit Python in Pyenv benutzt
[Python] Verwendung von Hash-Funktion und Taple.
OpenGoddard Verwendung der 2-Python-Bibliothek zur nichtlinearen optimalen Steuerung und Trajektoriengenerierung
Datenerfassung von der Analytics-API mit dem Google API-Client für die Python Part 2-Webanwendung
Tipps für diejenigen, die verwirrt sind, wie man is und == in Python verwendet
Verwendung der OpenGoddard 3-Python-Bibliothek zur nichtlinearen optimalen Steuerung und Trajektoriengenerierung
Verwendung der OpenGoddard 4-Python-Bibliothek zur nichtlinearen optimalen Steuerung und Trajektoriengenerierung
Verwendung der OpenGoddard 1-Python-Bibliothek zur nichtlinearen optimalen Steuerung und Trajektoriengenerierung
[Für Anfänger] Wie man den Befehl say mit Python benutzt!
[Python] [Django] Verwendung des Auswahlfelds und Hinzufügen von Optionen
Verwendung des interaktiven Python-Modus mit Git Bash
Analysieren mit Google Colaboratory mithilfe der Kaggle-API
Verwendung von Django mit Google App Engine / Python
Python # So überprüfen Sie Typ und Typ für Super-Anfänger
So bedienen Sie die Discord API mit Python (Bot-Registrierung)
Installieren Sie tweepy mit pip und verwenden Sie es für API 1.1
Verwenden Sie die Twitter-API mit Python
[Python] Verwendung von Liste 1
Überprüfen Sie, wie Sie Azure Key Vault mit Azure SDK für Python verwenden! (Maßnahmen rund um die Zertifizierung)
Wie benutzt man Python Argparse?
Python: Wie man pydub benutzt
[Python] Verwendung von checkio
Verwenden Sie die Unterschall-API mit Python3
[Python] Verwendung von input ()
Wie benutzt man Python Lambda?
[Python] Verwendung von virtualenv
python3: Verwendung der Flasche (3)
python3: Wie man eine Flasche benutzt
So verwenden Sie Google Colaboratory
Verwendung von Python-Bytes
[Python] Verwendung von Matplotlib, einer Bibliothek zum Zeichnen von Diagrammen
Verwendung des Python-Wrappers PyRealsense von Realsense mit Jetson Nano
So extrahieren Sie einen Termin in Google Kalender mit Python
[Python] Wie man mit Klassenvariablen mit Dekorator und Metaklasse spielt
[Einführung in die Udemy Python3 + -Anwendung] 36. Verwendung von In und Not
TensorFlow-Lernmethode für Profis der freien Künste und Python-Anfänger
[Python] Zusammenfassung der Verwendung von Split- und Join-Funktionen
Wie nutzt man maschinelles Lernen für die Arbeit? 03_Python-Codierungsverfahren
Vergleich der Verwendung von Funktionen höherer Ordnung in Python 2 und 3
Ich wusste nicht, wie ich die [Python] für die Anweisung verwenden sollte
So melden Sie sich mit Python bei AtCoder an und senden automatisch