Pythonを使用してGoogleアナリティクスAPIにアクセスできるように、サービスアカウントアプリを作成しようとしています。 2つのことが私を混乱させています。まず、次のコードを使用すると、
`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にログオンすると、セキュリティアイコンやその他のオプションボタンが見つかりません。どうぞよろしくお願いいたします。
そのエラーはおそらくpython-opensslパッケージが必要であることを意味します。
apt-get install python-openssl
これは私のために(PEMに変換せずに)トリックをしました:
pip install PyOpenSSL
pip freeze
はバージョン0.15.1を持っていると言っています
開発環境にpycryptoおよびpython-sslライブラリがインストールされている場合でも、このpycrypto
ライブラリをアプリケーションのapp.yaml
ファイルに追加する必要があります。
libraries:
- name: pycrypto
version: "latest"
私は最近これを設定しましたが、 PyCrypto 2.6.1 を選択しましたが、前の回答で述べたようにpython-opensslを使用することもできます。
私が抱えていた唯一の問題であり、これを特定することはできませんが、Google Developer Consoleによって生成されたP12キーが(Content API for Shoppingへの)サービスアカウントAPI呼び出しで機能せず、キーを切り替える必要がありました物事を進めるために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を使用してみてください。
重要なことの1つは、Googleアナリティクスにアクセスして、サービスアカウントの作成時に作成されたクライアントのメールアドレスに適切な権限を付与することを忘れないでください。
OSX 10.11 El CapitanはOpenSSLを配布しなくなりました。 Homebrewと静的ビルドを使用してcryptography
をインストールできました:
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
より詳しい情報