J'écris un programme pour inviter plusieurs contacts Windows Live dans une application web, le tout dans Django 1.4. Je rencontre le problème suivant.Windows Live Login API Problème SSL - Python
Je suis en mesure de se connecter l'utilisateur dans Windows Live en utilisant ses identifiants de compte via l'API Windows Live REST en utilisant ce morceau de code
def hotmail(request):
auth_params = {
'client_id': settings.HOTMAIL_KEY,
'scope': 'wl.basic',
'response_type': 'code',
'redirect_uri': 'http://my_testing_comain/hotmail/process'
}
auth_url = settings.HOTMAIL_AUTH_URL % urllib.urlencode(auth_params)
return HttpResponseRedirect(auth_url)
Ensuite, je reçois un code d'autorisation que j'échange d'une jeton d'accès (selon le protocole OAuth) c'est le morceau de code utiliser pour traiter la réponse de Windows live:
def hotmail_process(request):
if request.method == 'GET':
parameters = {
'code': request.GET['code'],
'grant_type': 'authorization_code',
'redirect_uri': 'http://my_testing_url/hotmail/process',
'client_id': settings.HOTMAIL_KEY,
'client_secret': settings.HOTMAIL_SECRET,
}
response = urllib2.urlopen(settings.HOTMAIL_AUTH_URL % urllib.urlencode(parameters)).read()
response = simplejson.loads(response)
consumer = oauth.Consumer(settings.HOTMAIL_KEY, settings.HOTMAIL_SECRET)
client = oauth.Client(consumer)
contacts = client.request(settings.HOTMAIL_USER_FRIENDS_URI % response['access_token'])
return HttpResponse(simplejson.loads(contacts))
return HttpResponse('Invalid request')
Mais je reçois l'erreur suivante:
SSLHandshakeError at /hotmail/process/
[Errno 1] _ssl.c:499: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Request Method: GET
Request URL: http://my_testing_url/hotmail/process/?code=5330307c-664c-4d5b-27b3-a19a97bc8546
Django Version: 1.4
Exception Type: SSLHandshakeError
Exception Value:
[Errno 1] _ssl.c:499: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
and the following traceback:
Environment:
Request Method: GET
Request URL: http://my_testing_url/hotmail/process/?code=5330307c-664c-4d5b-27b3-a19a97bc8546
Django Version: 1.4
Python Version: 2.7.1
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.admindocs',
'contacts')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')
Traceback:
File "/home/user/virtenvs/israel/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/home/user/virtenvs/israel/networks/contacts/views.py" in hotmail_process
26. contacts = client.request(settings.HOTMAIL_USER_FRIENDS_URI % response['access_token'])
File "/home/user/virtenvs/israel/lib/python2.7/site-packages/oauth2/__init__.py" in request
682. connection_type=connection_type)
File "/home/user/virtenvs/israel/lib/python2.7/site-packages/httplib2/__init__.py" in request
1544. (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
File "/home/user/virtenvs/israel/lib/python2.7/site-packages/httplib2/__init__.py" in _request
1294. (response, content) = self._conn_request(conn, request_uri, method, body, headers)
File "/home/user/virtenvs/israel/lib/python2.7/site-packages/httplib2/__init__.py" in _conn_request
1230. conn.connect()
File "/home/user/virtenvs/israel/lib/python2.7/site-packages/httplib2/__init__.py" in connect
1005. raise SSLHandshakeError(e)
Exception Type: SSLHandshakeError at /hotmail/process/
Exception Value: [Errno 1] _ssl.c:499: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
La chose est que, si je supprime la ligne où je fais la client.request() pour cela:
return HttpResponseRedirect(settings.HOTMAIL_USER_FRIENDS_URI % response['access_token'])
Je reçois les contacts au format JSON dans mon navigateur
Donc, apparemment , mon python oauth2 lib manque quelques certificats (ou c'est ce que je pense), donc j'ai essayé ce Python - SSL Issue with Oauth2 sans résultat. J'ai également essayé certaines bibliothèques avant de découvrir qu'elles étaient obsolètes. J'ai également essayé de le faire avec l'appel de l'API REST simple, mais j'ai reçu une réponse «INTERDIT».
Ma bibliothèque oauth2 fonctionne très bien car j'ai été capable d'implémenter la même fonctionnalité avec GMail.
Toute aide ou indice sera vraiment apprécié.
Merci d'avance.
Ce serait génial si vous pouviez partager votre solution. :-) –
Non, je n'ai pas, j'ai fini par faire un mini-howto sur comment exporter vos contacts en CSV de hotmail et yahoo et en écrivant des analyseurs pour cela – israelord