web-dev-qa-db-fra.com

Accès à l'API Google à l'aide du compte de service oauth2client.client.CryptoUnavailableError: Aucune bibliothèque de chiffrement disponible.

J'essaie de créer une application de compte de service pour pouvoir accéder à l'API Google Analytics à l'aide de Python. Deux choses me déroutent. Tout d'abord, lorsque j'utilise le code suivant:

`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')`

Je reçois l'erreur suivante: 

`oauth2client.client.CryptoUnavailableError: No crypto library available`

Après une petite recherche, j'ai découvert que cela pouvait être lié à l'octroi d'une autorité de domaine d'application à un compte de service. Toutefois, lorsque je me connecte à la console Google Developers, je ne parviens pas à localiser l'icône de sécurité ou le bouton Plus d'options. Toute aide très appréciée merci. 

15
user3277225

Cette erreur signifie probablement que vous avez besoin du paquet python-openssl.

apt-get install python-openssl
13
Wraezor Sharp

Cela a fait le tour pour moi (sans convertir en PEM):

pip install PyOpenSSL

pip freeze dit que j'ai la version 0.15.1

32
shacker

Même si vous avez installé les bibliothèques pycrypto & python-ssl dans votre environnement de développement, vous devez ajouter cette bibliothèque pycrypto dans le fichier app.yaml de votre application.

libraries:
- name: pycrypto
  version: "latest"
7
Nijin Narayanan

Je viens tout juste de le configurer, mais j'ai opté pour PyCrypto 2.6.1 , mais vous pouvez également utiliser python-openssl comme indiqué dans la réponse précédente. 

Le seul problème que j'ai eu et je ne peux pas le localiser, mais la clé P12 générée par la console de développeur Google ne fonctionnait pas avec mon appel d'API de compte de service (à l'API de contenu pour le shopping), et j'ai dû permuter la clé au format PEM pour faire avancer les choses.

Ma configuration: (Win7, python 2.7.x, PyCrypto 2.6.1) 

L'erreur que j'ai eu lorsque j'essayais d'utiliser la clé P12, mais résolue plus tard lors de la conversion en PEM:

Erreur 3: le format PKCS12 n'est pas pris en charge par la bibliothèque PyCrypto. NotImplementedError: le format PKCS12 n'est pas pris en charge par la bibliothèque PyCrypto. Essayez de convertir en "PEM" (openssl pkcs12 -in xxxxx. p12 -nodes -nocerts> privatekey.pem) ou en utilisant PyOpenSSL si le code natif est une option.

Une chose importante, n'oubliez pas d'aller dans Google Analytics et d'accorder les autorisations appropriées pour l'adresse e-mail du client créée lors de la création du compte de service. 

4
davidtzau

OSX 10.11 El Capitan ne distribue plus OpenSSL. J'ai pu installer cryptography en utilisant Homebrew et une version statique:

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

Plus d'informations

0
Mikko Ohtamaa