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).
python 2.7.5 MacOS X 10.9.5
Es gibt einige Dinge, die Sie tun müssen, um sich bei OAuth 2.0 zu authentifizieren. Überlassen Sie die Schritte der Reihe nach.
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.
Wählen Sie "API" aus dem Menü auf der linken Seite.
"Drive API" befindet sich rechts.
"API aktivieren"
Aktiviert.
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.
"Neue Kunden-ID erstellen"
Wählen Sie "Dienstkonto" und "Kunden-ID erstellen".
Die JSON-Datei wird lokal heruntergeladen und ein Abschlussdialog wird angezeigt. (Diese JSON-Datei wird in diesem Verfahren nicht verwendet.)
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.
Der private Schlüssel wurde lokal gespeichert. (Der gespeicherte private Schlüssel ist "MyProject.p12")
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.
Öffnen Sie die Tabelle, auf die Sie mit der API zugreifen möchten, und wählen Sie "Freigeben".
Geben Sie die angegebene E-Mail-Adresse ein und klicken Sie auf "Senden".
Damit sind die Freigabeeinstellungen abgeschlossen.
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">シート1</ns0:title>
PKCS12 format is not supported by the PyCrypto library.
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
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
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