0

DropboxPythonSDKの使い方を学んでいます。ただし、リクエストトークンを生成しようとすると、問題が発生します。これが私が使用しているコードです(ここでは実際のアプリキーとシークレットをAPP_KEYとAPP_SECRETに置き換えましたが、試してみるときに実際のアプリキーとシークレットを使用しました)。

from dropbox import client, rest, session
APP_KEY = 'APP_KEY'
APP_SECRET = 'APP_SECRET'
ACCESS_TYPE = 'app_folder'
print 'Creating session object'
sess = session.DropboxSession(APP_KEY, APP_SECRET, ACCESS_TYPE)
print 'Session created!\nCreating request token'
request_token = sess.obtain_request_token()
print 'Created request token!'
url = sess.build_authorize_url(request_token)
print url
raw_input()
access_token = sess.obtain_access_token(request_token)
client1 = client.DropboxClient(sess)
print client1.account_info()

エラーが発生した場所を確認できるように、さまざまなオブジェクトを作成しているときにプログラムにメッセージを出力させました。これは出力です:

aaron@Aarons-Ubuntu-Computer:~/Twisted$ python example.py
Creating session object
Session created!
Creating request token
Traceback (most recent call last):
  File "example.py", line 8, in <module>
    request_token = sess.obtain_request_token()
File "/usr/local/lib/python2.7/dist-packages/dropbox-1.4-py2.7.egg/dropbox/session.py", line 160, in obtain_request_token
response = rest.RESTClient.POST(url, headers=headers, params=params, raw_response=True)
File "/usr/local/lib/python2.7/dist-packages/dropbox-1.4-py2.7.egg/dropbox/rest.py", line 140, in POST
  return cls.request("POST", url, post_params=params, headers=headers, raw_response=raw_response)
File "/usr/local/lib/python2.7/dist-packages/dropbox-1.4-py2.7.egg/dropbox/rest.py", line 64, in request
  conn = ProperHTTPSConnection(host, 443)
File "/usr/local/lib/python2.7/dist-packages/dropbox-1.4-py2.7.egg/dropbox/rest.py", line 214, in __init__
  self.cert_reqs = ssl.CERT_REQUIRED
AttributeError: 'module' object has no attribute 'CERT_REQUIRED'

以前にこのコードを使用してみましたが、この問題は発生しませんでした。また、Dropbox SDKを削除して再インストールしましたが、結果はありません。この問題の原因は何ですか?どうすれば修正できますか?

アップデート

Kannanのコードを追加すると、出力は次のよう Ready Generating session Session Generated! Generating request token ['Certificate', 'CertificateOptions', 'CertificateRequest', 'Client', 'ClientContextFactory', 'Connector', 'ContextFactory', 'DN', 'DefaultOpenSSLContextFactory', 'DistinguishedName', 'KeyPair', 'Port', 'PrivateCertificate', 'SSL', 'Server', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'implementedBy', 'implements', 'implementsOnly', 'interfaces', 'supported', 'tcp'] になります。エラーが発生します。SSL証明書を再作成しようとしましたが、うまくいきませんでした。

4

2 に答える 2

3

同じエラーが発生します。あなたが提案したことを試しましたが、sslモジュールには属性' file 'がなく、 dir(ssl)を出力すると、 [' doc '、' loader '、' name '、' package ']しかありません。また、Google AppEngineでprintstr(ssl)を試してみると、module'ssl'(組み込み)が表示されますが、コマンドラインからpythonを実行すると、module'ssl'from'/が表示されます。 Library / Frameworks / Python.framework / Versions / 2.7 / lib / python2.7 /ssl.pyc'およびコマンドラインからのsslにはファイル属性があります。

sslがどのようにハイジャックされているかはわかりません...しかし、それは確かです。

編集:ローダーは0x1142684d0のgoogle.appengine.tools.dev_appserver_import_hook.HardenedModulesHookオブジェクトです

編集:ここで関連する問題を見つけました:Google App Engine(ローカル開発サーバー)のSSLError

于 2012-11-06T15:43:44.880 に答える
1

これは奇妙です。Python2.7のドキュメントには間違いなく言及されていssl.CERT_REQUIREDます。

SDKを変更してみて、失敗した行の直前に追加してください

print dir(ssl)
print ssl.__file__

それはあなたが何が悪いのかを理解するのに役立つかもしれません。

于 2012-06-08T04:41:35.977 に答える