Question

Je suis en train d'utiliser django-socialauth ( http://github.com/uswaretech/Django- Socialauth) pour l'authentification des utilisateurs pour mon projet django.

Ceci est le temps de travail avec des sapins et je Openid ai dû comprendre exactement comment fonctionne ce id ouvert. J'ai plus ou moins compris, maintenant, mais il y a peu de choses qui me échappent.

Le processus d'authentification commence lorsque la demande est mis en place dans au django-socialauth.openid_consumer.views.begin. Je peux voir que la demande d'authentification sortante est plus ou moins quelque chose comme ceci:

https://www.google.com/accounts/o8/ud?openid.assoc_handle=AOQobUckRThPUj3K1byG280Aze-dnfc9Iu6AEYaBwvHE11G0zy8kY8GZ&
openid.ax.if_available=fname&
openid.ax.mode=fetch_request&
openid.ax.required=email&
openid.ax.type.email=http://axschema.org/contact/email&
openid.ax.type.fname=http://example.com/schema/fullname&
openid.claimed_id=http://specs.openid.net/auth/2.0/identifier_select&
openid.identity=http://specs.openid.net/auth/2.0/identifier_select&
openid.mode=checkid_setup&openid.ns=http://specs.openid.net/auth/2.0&
openid.ns.ax=http://openid.net/srv/ax/1.0&
openid.ns.sreg=http://openid.net/extensions/sreg/1.1&
openid.realm=http://localhost/&
openid.return_to=http://localhost/social/gmail_login/complete/?janrain_nonce=2010-03-20T11%3A19%3A44ZPZCjNc&openid.sreg.optional=postcode,country,nickname,email

Ceci est beaucoup comme 2ème exemple ici: http://code.google.com/apis/accounts/docs/ OpenID.html # échantillons

Le problème est que la demande, je reviens, est rien comme l'exemple correspondant de code.google.com (regarder le 3ème exemple par exemple des réponses Réponse dict je reçois est comme ceci:.

{
'openid.op_endpoint': 'https://www.google.com/accounts/o8/ud', 
'openid.sig': 'QWMa4x4ruMUvSCfLwKV6CZRuo0E=', 
'openid.ext1.type.email': 'http://axschema.org/contact/email', 
'openid.return_to': 'http://localhost/social/gmail_login/complete/?janrain_nonce=2010-03-20T17%3A54%3A06ZHV4cqh', 
'janrain_nonce': '2010-03-20T17:54:06ZHV4cqh', 
'openid.response_nonce': '2010-03-20T17:54:06ZdC5mMu9M_6O4pw', 
'openid.claimed_id': 'https://www.google.com/accounts/o8/id?id=AItOghawkFz0aNzk91vaQWhD-DxRJo6sS09RwM3SE', 
'openid.mode': 'id_res', 
'openid.ns.ext1': 'http://openid.net/srv/ax/1.0', 
'openid.signed': 'op_endpoint,claimed_id,identity,return_to,response_nonce,assoc_handle,ns.ext1,ext1.mode,ext1.type.email,ext1.value.email', 
'openid.ext1.value.email': 'my.emailaddress@gmail.com', 
'openid.assoc_handle': 'AOQobUfssTJ2IxRlxrIvU4Xg8HHQKKTEuqwGxvwwuPR5rNvag0elGlYL',
'openid.ns': 'http://specs.openid.net/auth/2.0', 
'openid.identity': 'https://www.google.com/accounts/o8/id?id=AItOawkghgfhf1FkvaQWhD-DxRJo6sS09RwMKjASE', 
'openid.ext1.mode': 'fetch_response'}

Le socialauth lui-même a été construit pour accepter mon adresse e-mail ainsi:

    elif request.openid and request.openid.ax:
        email = request.openid.ax.get('email')

Et, évidemment, cela ne fonctionne pas.

Pourquoi je demande tout cela est, peut-être que je fais quelque chose de mal et ma requête sortante est faux? Ou suis-je faire tout correctement et devrait changer le module socialaouth d'accepter les informations d'une manière nouvelle et valider le changement?

Alan

Était-ce utile?

La solution

Essayez d'utiliser l'URI attribut complet dans votre ax.get, à savoir ax.get('http://axschema.org/contact/email')

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top