这个Openid错误是什么意思:尝试使用存储的发现信息时出错

4 投票
2 回答
2079 浏览
提问于 2025-04-15 18:39

我正在尝试用django-openid和openid来搭建一个应用。可是我遇到了以下错误,我搞不清楚是什么原因导致的。

[Fri Jan 29 13:29:20 2010] [error] Generated checkid_setup request to https://www.google.com/accounts/o8/ud with assocication XXXXXXXXXXXXXX  
[Fri Jan 29 13:29:26 2010] [error] Error attempting to use stored discovery information: <openid.consumer.consumer.TypeURIMismatch: Required type http://specs.openid.net/auth/2.0/signon not found in ['http://specs.openid.net/auth/2.0/server', 'http://openid.net/srv/ax/1.0', 'http://specs.openid.net/extensions/ui/1.0/mode/popup', 'http://specs.openid.net/extensions/ui/1.0/icon', 'http://specs.openid.net/extensions/pape/1.0'] for endpoint <openid.consumer.discover.OpenIDServiceEndpoint server_url='https://www.google.com/accounts/o8/ud' claimed_id=None local_id=None canonicalID=None used_yadis=True >>  
[Fri Jan 29 13:29:26 2010] [error] Attempting discovery to verify endpoint  
[Fri Jan 29 13:29:26 2010] [error] Performing discovery on https://www.google.com/accounts/o8/id?id=PrHw_N5_3j1HM  
[Fri Jan 29 13:29:26 2010] [error] Received id_res response from https://www.google.com/accounts/o8/ud using association XXXXXXXXXXXXX  

看起来Python无法使用从Google获取的信息。这个错误是因为来自Google的数据有问题,还是说是openid本身的问题呢?

2 个回答

0

这个问题发生在你给的链接是服务器的地址,而不是声明的标识符。对于生成这个问题的路径来说,这确实是个错误,因为这个链接不能用作标识符。不过系统内部会捕捉到这个错误,并用它向服务器请求一个真正的标识符,所以你可以放心地忽略这些日志信息。尽管如此,还是有人在GitHub上向python-openid项目提交了一个bug报告,并提出了修复方案。

0

嗯,这其实并不是致命错误;我在用 python-openid 的示例代码连接谷歌的 OP 标识符时也遇到过同样的情况(就是那个会生成奇怪的定向标识符的 /accounts/o8/id),但它还是能成功登录。

这可能会导致一些日志信息的杂乱,如果你有一个“用谷歌登录”的按钮,而这个库可能可以更聪明一点,不去使用存储的发现信息,特别是当它是针对 OP 标识符的时候。不过,如果你根本无法登录,那就说明你还有其他问题。

撰写回答