Python OpenID错误:发现[uri]后未找到匹配的端点
当我调用使用者的complete()方法时,我得到一个“在发现[openid identifier]后找不到匹配的端点”错误 有趣的是,在我测试过的四个OpenID提供者中,只有LiveJournal观察到了这种行为。您可以建议采取哪些步骤来调查和解决问题Python OpenID错误:发现[uri]后未找到匹配的端点,openid,mod-python,Openid,Mod Python,当我调用使用者的complete()方法时,我得到一个“在发现[openid identifier]后找不到匹配的端点”错误 有趣的是,在我测试过的四个OpenID提供者中,只有LiveJournal观察到了这种行为。您可以建议采取哪些步骤来调查和解决问题 store = FileOpenIDStore("/path/to/store") def login(req, uri): req.content_type = "text/html" session = Session.
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
我看不到您的代码中有任何明显的错误,但以下是一些需要调查的步骤:
- 是否有来自
的任何输出?默认情况下,它会登录到stderr,但是如果您的web服务器不允许您查看stderr,您可以覆盖它以登录到其他地方oidutil.log
- 捕获所有请求/响应。您可以使用类似这样的方法获取通过浏览器传递的间接请求/响应,并将其从python openid发行版馈送到
,使其更具可读性contrib/openid parse
- python openid源代码发行版中的示例使用者是否与您的LJ标识符一起工作?如果是这样,那么示例和代码之间的请求/响应有什么区别
- 您的LJ标识符中有标点符号吗
- LJ是您测试的唯一OpenID版本1.x提供程序吗?(可能吧。希望剩下的不会太多。)
- 您的参数解析可以使用
,但我不确定这是否真的是个问题。(和parse_qs返回{key:[值列表]},而urlparse.parseqs
需要{key:single value},因此必须将一个值映射到另一个值。)Consumer.complete
,除了(DiscoveryFailure,typeurismatch):
,因为发生不匹配时_discoverAndVerify方法会引发DiscoveryFailure。谢谢你给我指出了正确的方向:)嗯。天鹅座以worksforme
的身份关闭了那张罚单。这对我也有用。我不知道那里发生了什么事。