Pythonクライアントがこのコードを使用して承認を得るために、Googleアプリにアクセスしようとしています(個人情報は明らかに編集されています):
import gflags
import httplib2
from apiclient.discovery import build
from oauth2client.file import Storage
from oauth2client.client import SignedJwtAssertionCredentials
from oauth2client.tools import run
f = open('privatekey.p12', 'rb')
key = f.read()
f.close()
credentials = SignedJwtAssertionCredentials(
service_account_name='[email protected]',
private_key=key,
scope = 'https://www.googleapis.com/auth/calendar')
http = httplib2.Http()
http = credentials.authorize(http)
service = build(serviceName='calendar', version='v3', http=http)
しかし、私はこのエラーを受け取ります:
ImportError: cannot import name SignedJwtAssertionCredentials
Google v3 API Python ClientとOAuth2をインストールしました。あまり使用していませんが、これらのモジュールには他の問題はないようです。行くの?
Pyopensslをインストールしていないようです。 easy_install pyopenssl
経由でインストールします。
Libraries oauth2client.client
if HAS_OPENSSL:
# PyOpenSSL is not a prerequisite for oauth2client, so if it is missing then
# don't create the SignedJwtAssertionCredentials or the verify_id_token()
# method.
class SignedJwtAssertionCredentials(AssertionCredentials):
....
今日、この問題が発生し、oauth2clientバージョン2.0からバージョン1.5.2にロールバックする必要がありました。
pip install oauth2client==1.5.2
ソースリポジトリ は、新しいコードを使用するために最近更新されました。
from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials
...
アレクサンダー・マーグラフが言ったように、SignedJwtAssertionCredentialsをインポートするにはPyOpenSSLが必要です
単に:pip install pyopenssl
注意:OpenSSL Win32ライブラリがインストールされていない場合、Windowsでは失敗します http://slproweb.com/products/Win32OpenSSL.html (ライトバージョンではなく、完全なパッケージが必要です)。また、pyopensslをインストールする前に、パス変数に追加する必要があることに注意してください
ローカルの開発環境を構築しようとしていましたが、ここでのソリューションはどれも機能していませんでした。私にとってパズルの余分な部分は:
$ pip install pycrypto
以下のいずれかまたはすべてに加えて:
$ pip install pyopenssl
$ pip install httplib2
$ pip install oauth2client
$ pip install ssl
GAEにはpycrypto
パッケージが内部で利用可能です (app.yamlにリストされているライブラリを確認してください)図書館で何がなぜこんなに惨めな生活を送っているのか、まだ明確ではありません。
oauth2client
バージョンが最初。
このバージョンが2.0以上の場合、ServiceAccountCredentials
の代わりにSignedJwtAssertionCredentials
を使用します。
3つのリファレンスをご覧ください。
「oauth2client」モジュールのバージョンを確認してください。おそらくバージョン1.5.2以降を使用している場合は、バージョンをダウングレードし、1.5.2または「oauth2client.client.AccessTokenCredentials」を再インストールすることでこの問題を修正できます。ドキュメントリンク https://oauth2client.readthedocs.io/en/latest/source/oauth2client.client.html