3

Google Analytics Reporting API V4を使用してデータをダウンロードしようとしています。pyOpenSSL NotImplementedError Google App Engine

私のlib/フォルダ(GAEプロジェクト上)には、pyOpenSSLとそのすべての依存関係があります。

ローカル、私のvirtualenvで、それは正常に動作します。

Environment: 
 

 

 
Request Method: GET 
 
Request URL: ############### 
 

 
Django Version: 1.9 
 
Python Version: 2.7.5 
 
Installed Applications: 
 
('django.contrib.admin', 
 
'django.contrib.auth', 
 
'django.contrib.contenttypes', 
 
'django.contrib.sessions', 
 
'django.contrib.messages', 
 
'django.contrib.staticfiles', 
 
'polls') 
 
Installed Middleware: 
 
('django.contrib.sessions.middleware.SessionMiddleware', 
 
'django.middleware.common.CommonMiddleware', 
 
'django.middleware.csrf.CsrfViewMiddleware', 
 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
 
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
 
'django.contrib.messages.middleware.MessageMiddleware', 
 
'django.middleware.clickjacking.XFrameOptionsMiddleware', 
 
'django.middleware.security.SecurityMiddleware') 
 

 

 

 
Traceback: 
 

 
File "/base/data/home/apps/myapp/1.394185263495829842/lib/django/core/handlers/base.py" in get_response 
 
    149.      response = self.process_exception_by_middleware(e, request) 
 

 
File "/base/data/home/apps/myapp/1.394185263495829842/lib/django/core/handlers/base.py" in get_response 
 
    147.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 
 

 
File "/base/data/home/apps/myapp/1.394185263495829842/polls/views.py" in index 
 
    27.  return HttpResponse(json.dumps(we.atualizacao_diaria())) 
 

 
File "lib/workers/worker_estacio.py" in atualizacao_diaria 
 
    41.   return self.atualizar_periodo(f_date, f_date) 
 

 
File "lib/workers/worker_estacio.py" in atualizar_periodo 
 
    47.   c_ga_estacio = ConectorEstacioGA() 
 

 
File "lib/workers/conectores/conector_ga.py" in __init__ 
 
    50.   credentials = ServiceAccountCredentials.from_p12_keyfile(SERVICE_ACCOUNT_EMAIL, KEY_FILE_LOCATION, scopes=SCOPES) 
 

 
File "lib/oauth2client/service_account.py" in from_p12_keyfile 
 
    345.    token_uri=token_uri, revoke_uri=revoke_uri) 
 

 
File "lib/oauth2client/service_account.py" in _from_p12_keyfile_contents 
 
    300.    raise NotImplementedError(_PKCS12_ERROR) 
 

 
Exception Type: NotImplementedError at/
 
Exception Value: 
 
This library only implements PKCS#12 support via the pyOpenSSL library. 
 
Either install pyOpenSSL, or please convert the .p12 file 
 
to .pem format: 
 
    $ cat key.p12 | \ 
 
    > openssl pkcs12 -nodes -nocerts -passin pass:notasecret | \ 
 
    > openssl rsa > key.pem

誰かが私を助けてくださいでした:?私は取得していますエラーです

+0

ベース:)を助けるかもしれない願っていますが、既にファイルを.P12するファイルの種類を変更しようとしましたか?エラー報告書に示唆されているように?また、この[サービスアカウント](https://developers.google.com/identity/protocols/OAuth2ServiceAccount)のドキュメントで詳細を確認してください。 –

+0

ええ、私は試しました。私はこれがかなり多くのアプリエンジンの問題だと思っています。すべてのものがテストマシンで正常に動作しますが、実稼働環境にデプロイすると故障します。私はアプリエンジンに問題があるとは言わない、私はpyOpenSSLを使用する方法について何かが足りないと言っている:) –

答えて

9

私は、.p12キーを使用するための適切なライブラリをGAEにインストールする方法については手がかりがありません。

私は.P12と同じ場所にダウンロードすることができます.jsonキーを使用して、それを解く:

enter image description here

その後、ServiceAccountCredentialsコンストラクタを変更することが重要である:

credentials = ServiceAccountCredentials.from_p12_keyfile(SERVICE_ACCOUNT_EMAIL, KEY_FILE_LOCATION_P12, scopes=SCOPES)

を置き換える必要があります:

credentials = ServiceAccountCredentials.from_json_keyfile_name(KEY_FILE_LOCATION_JSON, scopes=SCOPES)

私は、誰かがあなたのエラーの