it-swarm.com.de

Google API-Zugriff über das Dienstkonto oauth2client.client.CryptoUnavailableError: Keine Kryptobibliothek verfügbar

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. 

15
user3277225

Dieser Fehler bedeutet wahrscheinlich, dass Sie das Paket python-openssl benötigen.

apt-get install python-openssl
13
Wraezor Sharp

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

32
shacker

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"
7
Nijin Narayanan

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. 

4
davidtzau

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

0
Mikko Ohtamaa