Доступ к API Google через служебную учетную запись oauth2client.client.CryptoUnavailableError: нет доступной библиотеки криптографии

Я пытаюсь создать приложение учетной записи службы, чтобы получить доступ к Google Analytics api с помощью Python. Меня смешивают две вещи. Во-первых, когда я использую следующий код:

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

Я получаю следующую ошибку:

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

После небольшого исследования я обнаружил, что это может иметь отношение к предоставлению полномочий домена домена домена для учетной записи службы. Однако, когда я вхожу в Google Developers Console, я не могу найти значок безопасности или кнопку больше опций. Любая помощь очень благодарна вам.

Ответы

Ответ 1

Эта ошибка, вероятно, означает, что вам нужен пакет python-openssl.

apt-get install python-openssl

Ответ 2

Это сделало трюк для меня (без преобразования в PEM):

pip install PyOpenSSL

pip freeze говорит, что у меня версия 0.15.1

Ответ 3

Даже если вы установили библиотеки pycrypto и python-ssl в свою среду разработки, вам нужно добавить эту библиотеку pycrypto в файл приложения app.yaml.

libraries:
- name: pycrypto
  version: "latest"

Ответ 4

Я недавно установил это, но решил пойти с PyCrypto 2.6.1, но вы также можете использовать python-openssl, как указано в предыдущий ответ.

Единственная проблема, с которой я столкнулся, и я не могу определить это, но ключ P12, созданный Консоль разработчика Google, не работал с моим API-интерфейсом службы поддержки (в Content API for Shopping), и мне пришлось переключите ключ в формат PEM, чтобы добиться успеха.

Моя настройка: (Win7, python 2.7.x, PyCrypto 2.6.1)

Ошибка при попытке использования ключа P12, но позже была разрешена при преобразовании его в PEM:

Ошибка 3: формат PKCS12 не поддерживается библиотекой PyCrypto. NotImplementedError: формат PKCS12 не поддерживается библиотекой PyCrypto. Попробуйте преобразовать в "PEM" (openssl pkcs12 -in xxxxx.p12 -nodes -nocerts) privatekey.pem) или используя PyOpenSSL, если исходный код является опцией.

Важно отметить, что не забудьте войти в Google Analytics и предоставить соответствующие разрешения для адреса электронной почты клиента, созданного во время создания учетной записи службы.

Ответ 5

OSX 10.11 El Capitan больше не распространяет OpenSSL. Я смог установить cryptography с помощью Homebrew и static build:

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

Дополнительная информация