Dropbox Python SDK를 사용하는 방법을 배우고 있습니다. 그러나 요청 토큰을 생성하려고 할 때 문제가 발생합니다. 여기에 내가 사용하고있는 코드입니다 (내가 여기 APP_KEY와 APP_SECRET 내 실제 응용 프로그램 키와 비밀을 교체 한주의는,하지만 난 그것을 밖으로 시도 할 때 내 실제 응용 프로그램 키와 비밀을 사용했다.) 내가 가진Dropbox Python SDK SSL 오류
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()
프로그램은 오류가 발생한 위치를 볼 수 있도록 다른 객체를 생성 할 때 메시지를 출력합니다. 이 출력은 다음과 같습니다.
[email protected]:~/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를 제거하고 다시 설치해도 아무런 결과가 없습니다. 이 문제의 원인은 무엇이며 어떻게 해결할 수 있습니까?
UPDATE
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 인증서를 다시 만들려고 노력했다.
당신은 또한'인쇄 SSL .__ 파일 ___을'했나요? 'dir (ssl)'결과에서, 표준'ssl' 대신 Twisted의'twisted.internet.ssl'을 얻는 것처럼 보입니다. 수입 경로가 어쩌면 엉망이 되었습니까? –
당신이 옳았어요! ssl .__ file__은 /usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyc를 출력합니다. * - ** twisted.internet.ssl **을 가져 와서 내 클라이언트와 서버 프로그램간에 안전한 연결을 설정할 수 있다는 사실을 잊어 버렸습니다.나는 twisted_ssl **에서 twisted.internet import ssl **로 import 문을 변경하여 Dropbox를 방해하지 않도록하고 ** ** ssl ** ** ** reactor.listenSSL **에 대한 참조를 업데이트했습니다. 그래도 ssl.CERT_REQUIRED 오류가 발생했습니다. –
Dropbox SDK는'import ssl'을 수행하기 때문에'twisted.internet.ssl' 파일을 가져 오는 이유를 알 수 없습니다. 'PYTHONPATH' 환경 변수가 더 많이 포함하도록 설정되어 있지 않은지 확인하십시오. –