Je reçois une erreur "Aucun point de terminaison trouvé après la découverte de l'identificateur [openid identifier]" lorsque j'appelle la méthode complete() du consommateur. Le plus drôle est que sur les quatre fournisseurs OpenID que j'ai testés, ce comportement est observé uniquement avec LiveJournal. Quelles étapes pouvez-vous suggérer pour enquêter et résoudre le problème?Erreur Python OpenID: aucun point de terminaison correspondant trouvé après la découverte de [uri]
store = FileOpenIDStore("/path/to/store")
def login(req, uri):
req.content_type = "text/html"
session = Session.Session(req)
consumer = Consumer(session, store)
auth = consumer.begin(uri)
util.redirect(req, auth.redirectURL("http://example.com", "http://example.com/authtest.py?sid=" + session.id()))
return
def index(req, sid):
req.content_type = "text/html"
c = Consumer(Session.Session(req, sid), store)
args = req.args.split("&")
arg_dict = {}
for i in range(0, len(args)):
x, y = args[i].split("=")
arg_dict[x] = unquote(y)
v = c.complete(arg_dict, "http://example.com/authtest.py?" + req.args)
if v.status == 'failure':
return v.message
else:
return v.status
En utilisant oidutil.log je découvert que la bibliothèque openID ne vérifie pas OpenID 1.0, que LJ semble utiliser; il vérifie seulement 1.1 malgré le fait que le code pour le traitement 1.0 semble être là. Enquêter. – dpq
Je l'ai réparé. Selon http://trac.openidenabled.com/trac/ticket/162, dans consumer.py, la ligne 986 doit ressembler à 'except (DiscoveryFailure, TypeURIMismatch):', car la méthode _discoverAndVerify déclenche DiscoveryFailure lorsqu'une incompatibilité se produit. Merci de m'indiquer dans la bonne direction :) – dpq
Huh. cygnus a fermé ce billet en tant que 'workforme'. Et ça marche pour moi aussi. Je me demande ce qui se passe là-bas. – keturn