Ich versuche, eine Dienstkonto-App zu erstellen, damit ich mit Python auf die API von Google Analytics zugreifen kann. Zwei Dinge verwirren mich. Erstens, wenn ich den folgenden Code verwende:
`from oauth2client.client import SignedJwtAssertionCredentials
client_email = "#####client_email#######.gserviceaccount.com"
with open("XXXXXX.p12") as f:
private_key = f.read()
credentials = SignedJwtAssertionCredentials(client_email, private_key,'https://www.googleapis.com/auth/sqlservice.admin')`
Ich erhalte folgende Fehlermeldung:
`oauth2client.client.CryptoUnavailableError: No crypto library available`
Nach einigen Nachforschungen stellte ich fest, dass dies möglicherweise damit zusammenhängt, dass die App domänenweite Berechtigung für das Dienstkonto erhält. Wenn ich mich bei Google Developers Console anmelde, kann ich das Sicherheitssymbol oder die Schaltfläche "Weitere Optionen" nicht finden. Jede Hilfe sehr dankbar.
Dieser Fehler bedeutet wahrscheinlich, dass Sie das Paket python-openssl benötigen.
apt-get install python-openssl
Dies hat den Trick für mich gemacht (ohne in PEM zu konvertieren):
pip install PyOpenSSL
pip freeze
sagt, ich habe Version 0.15.1
Selbst wenn Sie in Ihrer Entwicklungsumgebung pycrypto- und python-ssl-Bibliotheken installiert haben, müssen Sie diese pycrypto
-Bibliothek in die app.yaml
-Datei Ihrer Anwendung einfügen.
libraries:
- name: pycrypto
version: "latest"
Ich habe dies kürzlich eingerichtet, entschied mich jedoch für PyCrypto 2.6.1 , aber Sie können auch Python-openssl verwenden, wie in der vorherigen Antwort erwähnt.
Das einzige Problem, das ich hatte, und ich kann das nicht genau feststellen, aber der von der Google Developer Console generierte P12-Schlüssel funktionierte nicht mit meinem Aufruf der Service Account-API (zur Content-API für Shopping), und ich musste den Schlüssel wechseln auf das PEM-Format, um die Dinge in Gang zu bringen.
Mein Setup: (Win7, Python 2.7.x, PyCrypto 2.6.1)
Der Fehler wurde beim Versuch, die P12-Taste zu verwenden, aber beim Konvertieren in PEM später behoben:
Fehler 3: Das PKCS12-Format wird von der PyCrypto-Bibliothek nicht unterstützt. NotImplementedError: Das PKCS12-Format wird nicht von der PyCrypto-Bibliothek unterstützt. Versuchen Sie, die Konvertierung in ein "PEM" (openssl pkcs12 -in xxxxx) durchzuführen. p12 -nodes -nocerts> privatekey.pem) oder PyOpenSSL verwenden, wenn der native Code eine Option ist.
Vergessen Sie nicht, in Google Analytics zu gehen und die entsprechenden Berechtigungen für die Client-E-Mail-Adresse zu erteilen, die während der Erstellung des Service-Kontos erstellt wird.
OSX 10.11 El Capitan verteilt OpenSSL nicht mehr. Ich konnte cryptography
mit Homebrew und statischem Build installieren:
env CRYPTOGRAPHY_OSX_NO_LINK_FLAGS=1 LDFLAGS="$(brew --prefix openssl)/lib/libssl.a $(brew --prefix openssl)/lib/libcrypto.a" CFLAGS="-I$(brew --prefix openssl)/include" pip install cryptography
Mehr Info