使用服务帐户访问Google API oauth2client.client.CryptoUnavailableError:没有可用的加密库

时间:2014-12-04 23:05:16

标签: google-app-engine python-2.7 google-analytics-api

我正在尝试创建一个服务帐户应用,以便我可以使用Python访问Google Analytics API。 有两件事令我困惑。首先,当我使用以下代码时:

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

在做了一些研究之后,我发现这可能与将app域范围的权限授予服务帐户有关。但是,当我登录Google Developers Console时,无法找到安全图标或更多选项按钮。任何帮助非常感谢谢谢。

5 个答案:

答案 0 :(得分:32)

这对我有用(不转换为PEM):

pip install PyOpenSSL

pip freeze说我的版本为0.15.1

答案 1 :(得分:13)

该错误可能意味着您需要python-openssl包。

apt-get install python-openssl

答案 2 :(得分:7)

即使你已经安装了pycrypto&您的开发环境中的python-ssl库,您需要在应用程序的pycrypto文件中添加此app.yaml库。

libraries:
- name: pycrypto
  version: "latest"

答案 3 :(得分:4)

我最近刚设置了它,但选择使用PyCrypto 2.6.1,但您也可以使用上一个答案中提到的python-openssl。

我遇到的唯一问题是我无法确定这一问题,但Google Developer Console生成的P12密钥并未使用我的服务帐户API调用(内容API购物),我不得不将密钥切换到PEM格式以使事情顺利进行。

我的设置:(Win7,python 2.7.x,PyCrypto 2.6.1)

尝试使用P12键时遇到的错误,但后来在将其转换为PEM时解决了:

错误3:PyCrypto库不支持PKCS12格式。 NotImplementedError:PyCrypto库不支持PKCS12格式。尝试转换为“PEM”(openssl pkcs12 -in xxxxx.p12 -nodes -nocerts> privatekey.pem)或使用PyOpenSSL,如果本机代码是一个选项。

重要的是,不要忘记进入Google Analytics并为在创建服务帐户期间创建的客户电子邮件地址授予适当的权限。

答案 4 :(得分:0)

OSX 10.11 El Capitan不再分发OpenSSL。我能够使用Homebrew和static build:

安装>>> z = 0.9 >>> spec.erf(z) 0.79690821242283216 >>> spec.erfinv(z) 1.1630871536766736 >>> spec.erf(spec.erfinv(z)) 0.89999999999999991
cryptography

更多信息