10

appengine (pycrypto 2.6 を使用) の SignedJwtAssertionCredentials は PKCS12 形式をサポートしていないため、どこでも提案されているように、代わりに PEM キーを使用しようとしています..

これは私のコードです:

  f = file(os.path.join(os.path.dirname(__file__), KEY_FILE), "r")
  key = f.read()
  f.close()

  credentials = SignedJwtAssertionCredentials(SERVICE_ACCOUNT_EMAIL, key,
      scope="https://www.googleapis.com/auth/drive"
  http = httplib2.Http()
  http = credentials.authorize(http)

KEY_FILEPEMキーで、次のコマンドで変換されます:

openssl pkcs12 -in privatekey.p12 -nodes -nocerts > privatekey.pem

しかし、それがPEMキーであることを認識しなかったかのように、私はまだこのエラーを受け取ります:

NotImplementedError: PKCS12 format is not supported by the PyCrpto library. 
Try converting to a "PEM" (openssl pkcs12 -in xxxxx.p12 -nodes -nocerts > privatekey.pem) or using PyOpenSSL if native code is an option.

ファイル名だけをコンストラクターに渡すと(ファイルの内容を読み取らずに)、同じエラーが発生します。

何か案が?

4

2 に答える 2

17

ええ、エラーは非常に誤解を招くものです。あなたがしていることは問題ありません。で始まるようにPEMファイルからヘッダーを削除する-----BEGIN PRIVATE KEY-----か、次のコマンドを実行します。

openssl pkcs8 -nocrypt -in privatekey.pem -passin pass:notasecret -topk8 -out pk.pem
于 2013-08-04T12:14:30.237 に答える
6

興味のある方のために、App Engine で Python を使用して Google+ Domains API を使用する方法に関する短いチュートリアルをまとめました 。https ://gist.github.com/vircheck/6292176

また、Drive API など、サービス アカウントに基づく他の API にも適用できます。

于 2013-08-21T13:22:11.830 に答える