1

我正在使用 LightOpenID 并且有一个测试页面,它是随附的 example-google.php 的近似副本(我投入了一些回声进行调试)。单击“使用 Google 登录”按钮会将我带到 Google。我使用有效的 Google Apps 电子邮件地址登录,然后返回到我的页面。但是,当它尝试验证claim_id 时,我得到一个“未找到服务器!” 信息。

我已经在谷歌上搜索了该短语以获取指导,但大多数回复只是指向 gitorious checkins 的链接。我深入研究代码,使用 fwrites 显示代码按以下顺序执行...

(由于我输入的所有调试代码,我的行号可能有点偏离......)

openid.php:validate() 被调用。在 validate() 中,大约第 568 行是这一行...

$server = $this->discover($this->data['openid_identity']);

此行之后,$server 为空,即''。

我可以证明在发现($url)的开头,变量

$url = http://<my Google Apps domain>.com/openid?id=117665028262121597341  

问题是调用 htmlTag() 时没有在第 364 行 (openid.php) 设置 $server。为 $content 抓取相同的 $url 但该 URL 返回 404,然后 htmlTag() 中的 pregs 失败

$url 不正确吗?它直接从“openid_identity”设置,我认为它来自 Google Apps。

这是成功登录 Google Apps 后返回的 URL。

http://intranet.<my domain>.com/<my path>/validate.php?openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.mode=id_res&openid.op_endpoint=https%3A%2F%2Fwww.google.com%2Fa%2F<my Google App domain>%2Fo8%2Fud%3Fbe%3Do8&openid.response_nonce=2010-10-25T04%3A23%3A26ZFQ4Fq3F3W1b9ug&openid.return_to=http%3A%2F%2Fintranet.<my domain>.com%2F<my path>%2Fvalidate.php&openid.assoc_handle=AOQobUeErcWBdJC6slZm3nCw_BRbvHTjpdtycleA2P89n15QCCr8fRDE&openid.signed=op_endpoint%2Cclaimed_id%2Cidentity%2Creturn_to%2Cresponse_nonce%2Cassoc_handle&openid.sig=yrja2H%2Fvufp2BqezN4NIVGA5wWM%3D&openid.identity=http%3A%2F%2F<my Google App domain>%2Fopenid%3Fid%3D117665028262121597341&openid.claimed_id=http%3A%2F%2F<my Google App domain>%2Fopenid%3Fid%3D117665028262121597341

我是 OpenID 的新手,因此非常感谢您在此处指出正确方向的短语或链接。

谢谢,埃里克 B。

4

1 回答 1

-1

(我的第二个答案)Mewp 又来了。我明白了。感谢您的明确解释。我将与我们的 Google 帐户代表一起了解他们传回的 URL 是怎么回事。

保重,埃里克·B。

(我的第一个回答)谢谢 Mewp,LightOpenID 先生本人!(尽管您的网站上没有提及性别)

如果 openid.mode 是 id_res,对我来说使用claim_identity 是否足够好/安全,而无需通过 validate()?跳过名为“验证”的内容似乎是错误的,但我得到并粘贴在原始帖子中的 URL 响应与成功登录和确认的 Google 示例响应相匹配,如下所示:http ://code.google.com/apis/accounts /docs/OpenID.html#Samples

谢谢,埃里克 B。

于 2010-10-25T15:59:41.680 回答