Lightopenid + Google Apps + validate()=找不到服务器!

时间:2010-10-25 04:52:26

标签: openid validation google-apps lightopenid

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

我用谷歌搜索了这个短语以获得指导,但大多数回复只是指向功勋登记的链接。我深入研究代码,使用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。同样的$ url被抓取为$ content但该URL返回404,然后在htmlTag()

中的pregs失败

$ url不正确吗?它直接来自'openid_identity',我认为它来自Google Apps。

以下是成功登录Google Apps后返回的网址。

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的新手,所以非常感谢在这里指出正确方向的短语或链接。

谢谢, Eric B.

1 个答案:

答案 0 :(得分:-1)

(我的第二个回答)Mewp再次出现。我明白了。谢谢你的明确解释。我将与我们的Google帐户代表联系,了解他们传回的网址是什么。

小心, Eric B.

(我的第一个答案) 谢谢你,Mewp,LightOpenID先生自己! (虽然在您的网站上没有提到性别)

如果openid.mode是id_res,那么使用claim_identity是否足够/安全,而不必通过validate()?跳过称为“验证”的内容似乎有误,但我收到并粘贴在原始帖子中的网址响应与Google示例回复相匹配,以便成功登录和确认,如下所示:http://code.google.com/apis/accounts/docs/OpenID.html#Samples

谢谢, Eric B.