[GO] Greifen Sie mit OAuth 2.0 von Python aus auf Tabellenkalkulationen zu

Hintergrund

In Bezug auf die Verwendung der Google API wurde der Zugriff mit der Google-Benutzer-ID und dem Kennwort im Mai 2015 gesperrt. Derzeit müssen Sie mit OAuth 2.0 zugreifen. In Bezug auf die Authentifizierung von Python zu OAuth 2.0 gab es überraschend wenig Informationen und es hat viel Zeit in Anspruch genommen, daher werde ich die Methode verlassen. In diesem Artikel geht es um Tabellenkalkulationen, aber ich vermute, dass andere APIs, die die gdata-Bibliothek verwenden, ebenfalls authentifiziert werden können (unbestätigt).

Umgebung

python 2.7.5 MacOS X 10.9.5

Authentifizierungsmethode mit OAuth 2.0

Es gibt einige Dinge, die Sie tun müssen, um sich bei OAuth 2.0 zu authentifizieren. Überlassen Sie die Schritte der Reihe nach.

1. Aktivieren Sie die Laufwerk-API

Tabellenkalkulationen werden mit der Drive-API der Google Apps-API ausgeführt. Aktivieren Sie daher die erforderliche API durch die folgenden Vorgänge.

Gehen Sie zur Entwicklerkonsole (https://console.developers.google.com/project) und wählen Sie Ihr Projekt aus. Wenn das Projekt nicht vorhanden ist, erstellen Sie eines mit einem geeigneten Namen.

プロジェクト.png

Wählen Sie "API" aus dem Menü auf der linken Seite.

概要_-_neoimagewall.png

"Drive API" befindet sich rechts.

API_ライブラリ_-_neoimagewall.png

"API aktivieren"

Drive_API_-_API_Project.png

Aktiviert.

Drive_API_-_API_Project.png

2. Erstellen Sie eine Client-ID für OAuth

Als Nächstes müssen Sie eine Client-ID und einen Schlüssel für OAuth erstellen. Ich werde die Methode posten.

Wählen Sie auf dem Bildschirm, der das Projekt in Developers Console öffnet, im Menü links "Anmeldeinformationen" aus.

Drive_API_-_API_Project.png

"Neue Kunden-ID erstellen"

認証情報_-_kumaproduct.png

Wählen Sie "Dienstkonto" und "Kunden-ID erstellen".

認証情報_-_kumaproduct.png

Die JSON-Datei wird lokal heruntergeladen und ein Abschlussdialog wird angezeigt. (Diese JSON-Datei wird in diesem Verfahren nicht verwendet.)

認証情報_-_kumaproduct.png

Bestätigen Sie, dass die Client-ID ausgestellt wurde. Wählen Sie "Neuen P12-Schlüssel generieren" und laden Sie den privaten Schlüssel (.p12) herunter.

認証情報_-_kumaproduct.png

Der private Schlüssel wurde lokal gespeichert. (Der gespeicherte private Schlüssel ist "MyProject.p12")

認証情報_-_kumaproduct.png

3. Einstellungen für die gemeinsame Nutzung von Tabellenkalkulationen

Für die im obigen Verfahren erstellte Client-ID muss die Freigabe auf der SpreadSheet-Seite festgelegt werden.

Notieren Sie sich zunächst die E-Mail-Adresse der ausgestellten Kunden-ID.

9184c188-2ade-9e97-7d1e-fb1ed6a2eaf0.png

Öffnen Sie die Tabelle, auf die Sie mit der API zugreifen möchten, und wählen Sie "Freigeben".

無題スプレッドシート_-_Google_スプレッドシート.png

Geben Sie die angegebene E-Mail-Adresse ein und klicken Sie auf "Senden".

無題スプレッドシート_-_Google_スプレッドシート.png

Damit sind die Freigabeeinstellungen abgeschlossen.

4. Quellcode

Jetzt ist es endlich soweit. Zugriff mit Python-Code.

Installieren Sie zunächst die erforderlichen Bibliotheken.

python


$ pip install gdata oauth2client

Der Authentifizierungsteil ist die folgende Quelle.

oauth2.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-

from oauth2client.client import SignedJwtAssertionCredentials
import gdata.spreadsheets.client

#Für die Authentifizierung erforderliche Informationen
client_email = "[email protected]" #In Schritt 2 angegebene E-Mail-Adresse
with open("MyProject.p12") as f: private_key = f.read() #Privater Schlüssel, ausgegeben in Schritt 2

#Anmeldeinformationen erstellen
scope = ["https://spreadsheets.google.com/feeds"]
credentials = SignedJwtAssertionCredentials(client_email, private_key,
    scope=scope)

#Vorbereiten des Clients für die Tabelle
client = gdata.spreadsheets.client.SpreadsheetsClient()

# OAuth2.Authentifizierungseinstellung auf 0
auth_token = gdata.gauth.OAuth2TokenFromCredentials(credentials)
auth_token.authorize(client)

# ----Jetzt können Sie über die Bibliothek auf die Tabelle zugreifen---- #

#Arbeitsblatt abrufen
sheets = client.get_worksheets("1TAVVsyhCM_nprkpa0-LGWBheaXt_ipX84fIIhJw2fa0") #Geben Sie die Tabellenkalkulations-ID an
for sheet in sheets.entry:
    print sheet.get_worksheet_id(), sheet.title

Wenn die letzte Druckanweisung wie folgt ausgegeben wird, ist dies ein Beweis dafür, dass Sie normal zugreifen können.

python


od6 <ns0:title xmlns:ns0="http://www.w3.org/2005/Atom">&#12471;&#12540;&#12488;1</ns0:title>

Fehler aufgetreten

PKCS12 format is not supported by the PyCrypto library.

Fehlerinhalt

PKCS12 format is not supported by the PyCrypto library. Try converting to a "PEM" (openssl pkcs12 -in xxxxx.p12 -nodes -nocerts > privatekey.pem) or using PyOpenSSL if native code is an option.

Der Fehler, der im folgenden Teil aufgetreten ist.

with open("MyProject.p12") as f

Korrespondenz

Sie können das Format des privaten Schlüssels so ändern, wie es in der Fehleranweisung angezeigt wird.

python


$ openssl pkcs12 -in MyProject.p12 -nodes -nocerts > MyProject.pem
Enter Import Password: #Geben Sie "kein Geheimnis" ein

Ändern Sie dann die Datei, um den Code einzulesen.

with open("MyProject.pem") as f

Referenz

GoogleAppEngine-Verwenden der Google Drive-API mit Google App Engine für PHP-Qiita http://qiita.com/hikoalpha/items/04ef84cd5f035ff64f23

python - Using Spreadsheet API OAuth2 with Certificate Authentication - Stack Overflow http://stackoverflow.com/questions/20209178/using-spreadsheet-api-oauth2-with-certificate-authentication/20211057#20211057

Using OAuth 2.0 for Server to Server Applications | Google Identity Platform | Google Developers https://developers.google.com/identity/protocols/OAuth2ServiceAccount?hl=ja

OAuth 2.0   |   API Client Library for Python   |   Google Developers https://developers.google.com/api-client-library/python/guide/aaa_oauth?hl=ja

google app engine - SignedJwtAssertionCredentials on AppEngine doesn't recognize PEM key - Stack Overflow http://stackoverflow.com/questions/17993604/signedjwtassertioncredentials-on-appengine-doesnt-recognize-pem-key

gdata: gdata.spreadsheets.client Namespace Reference - doxygen documentation | Fossies Dox http://fossies.org/dox/gdata-2.0.18/namespacegdata_1_1spreadsheets_1_1client.html

Recommended Posts

Greifen Sie mit OAuth 2.0 von Python aus auf Tabellenkalkulationen zu
Greifen Sie über Python auf Bitcoind zu
Mit Python abflachen
Greifen Sie über Python auf Oracle DB zu
Bearbeiten Sie Tabellenkalkulationen lokal mit Python
Verwenden von Rstan aus Python mit PypeR
Hinweise zur Verwendung von MeCab aus Python
Verwenden von Cloud-Speicher aus Python3 (Einführung)
So greifen Sie über Python auf Wikipedia zu
Führen Sie Ansible über Python mithilfe der API aus
Vorsichtsmaßnahmen bei der Verwendung von Phantomjs aus Python
Greifen Sie über Python auf die Shader-Knoten von Blender zu
Versuchen Sie es mit Amazon DynamoDB von Python
Von Python bis zur Verwendung von MeCab (und CaboCha)
Ich habe versucht, die UnityCloudBuild-API von Python zu verwenden
Zugriff auf RDS von Lambda (Python)
Umgang mit OAuth2-Fehlern bei Verwendung von Google APIs aus Python
SQL zu SQL
MeCab von Python
Scraping mit Python
Erstellen Sie mit python3 eine WAV-Datei aus dem GLSL-Shader
Führen Sie Python-Dateien mit Django aus HTML aus
Laden Sie Bilder von der URL mit Pillow in Python 3
Führen Sie Python-Skripte in Excel aus (mit xlwings).
Verwenden Sie thingspeak aus Python
Bearbeiten Sie Redmine mit Python Redmine
Bedienen Sie Filemaker von Python aus
Verwenden Sie fließend Python
Fibonacci-Sequenz mit Python
Änderungen von Python 3.0 zu Python 3.5
Python aus oder importieren
PUSH-Benachrichtigung von Python an Android mithilfe der Google-API
Verwenden Sie MySQL aus Python
Installieren Sie Python von der Quelle
Führen Sie Befehle aus Python aus
Datenbereinigung mit Python
MessagePack-Aufruf von Ruby to Python-Methoden (oder Python to Ruby-Methoden) mithilfe von RPC
Bedienen Sie Neutronen von Python!
Verwenden von Python # externen Paketen
Verwenden Sie MySQL aus Python
Altersberechnung mit Python
Betreiben Sie LXC von Python aus
Manipuliere Riak aus Python
Kopieren Sie S3-Dateien mit GSUtil von Python nach GCS
Verwenden Sie BigQuery aus Python.
Suchen Sie Twitter mit Python
Hauptkomponentenanalyse mit Python von nim mit nimpy
Studie aus Python Hour8: Verwenden von Paketen
Holen Sie sich Dateien von Linux mit paramiko und scp [Python]
Namensidentifikation mit Python
Führen Sie den Befehl von Python aus
Hinweise zur Verwendung von Python-Unterprozessen
Versuchen Sie es mit Tweepy [Python2.7]
Abrufen von Daten aus der Datenbank über ODBC mit Python (Access)
Abfrage von Python an Amazon Athena (unter Verwendung des benannten Profils)
Ich habe versucht, mit Python auf Google Spread Sheets zuzugreifen
[Python] Von Stdin lesen
ODBC-Zugriff auf SQL Server von Linux mit Python
Verwenden Sie mecab-ipadic-neologd von Python