Wygląda na to, że mam problem z SSL przy próbie użycia oAuth2 w Pythonie. Spędziłem większość popołudnia na próbie debugowania, ale nie mogę tego zrozumieć.Python - Problem z SSL z Oauth2
Oto mój skrypt Pythona (Nice and simple):
import oauth2.oauth2 as oauth
import urlparse
import time
## If you're actually processing requests, you'll want this
# import simplejson
### GET A REQUEST TOKEN ###
consumer = oauth.Consumer(key="***KEYHERE***", secret="***KEYSECRETHERE***")
request_token_url = 'https://api.instagram.com/oauth/access_token'
client = oauth.Client(consumer)
resp, content = client.request(request_token_url, "GET")
request_token = dict(urlparse.parse_qsl(content))
token = oauth.Token(request_token['oauth_token'], request_token['oauth_token_secret'])
A to błąd z interpreter Pythona:
Traceback (most recent call last):
File "E:\Projects\oAuth2Test\test.py", line 16, in <module>
resp, content = client.request(request_token_url, "GET")
File "E:\Projects\oAuth2Test\oauth2\oauth2.py", line 682, in request
connection_type=connection_type)
File "E:\Projects\oAuth2Test\httplib2\httplib2.py", line 1445, in request
(response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
File "E:\Projects\oAuth2Test\httplib2\httplib2.py", line 1197, in _request
(response, content) = self._conn_request(conn, request_uri, method, body, headers)
File "E:\Projects\oAuth2Test\httplib2\httplib2.py", line 1133, in _conn_request
conn.connect()
File "E:\Projects\oAuth2Test\httplib2\httplib2.py", line 914, in connect
raise SSLHandshakeError(e)
SSLHandshakeError: [Errno 1] _ssl.c:503: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Teraz tak to wiadomo, mam cacerts.txt że przyszedł z httplib2 we właściwym miejscu i został znaleziony, ale wciąż mam ten problem. Jakakolwiek pomoc się przyda, dzięki!
To 'cacerts.pem' wydaje się być bardziej kompletne. Poręczny link. –
Jako szybki hack możesz również nadpisać cacerts.txt przy pomocy cacerts.pem powyżej - wadą jest to, że musisz upewnić się, że odbywa się to we wszystkich twoich virtualenv - więc nie jest to naprawdę idealne. – Damian