我正在使用LightOpenID对Google应用程序验证OpenID。我发出了最初的authURL()请求,一切都很好。我调用validate(),但它失败了。通过大量的echo,我追踪到了validate()的最后几行
从validate()中,传递到discover($url)的url是https://www.google.com/accounts/o8/user-xrds?uri=http://my-domain.com/openid?id=11765028262121597341
discover()首先检查不存在的XRD位置。discover()接下来检查内容类型是否为xrds+xml,这是真的。discover()检查服务(.*)/Service,这是真的。这是服务的片段,/Service
<;服务优先级=“0”>;
<;类型>;http://specs.openid.net/auth/2.0/signon</类型>;
<;类型>;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</类型>;
<;URI>;https://www.google.com/a/<我的域名>;。com/o8/ud?be=o8</URI>;
</服务>;
discover()发现我们正在使用OpenID2,并将URI字段提取到$server变量中。discover()继续提取CanonicalID,发现Google支持AX而不是SREG。最后,discover()返回$server作为https://www.google.com/a/my-domain.com/o8/ud?be=o8
validate()将继续清理数据[]on 每个字段,具体取决于是否使用magic_引号。它将openid.mode设置为“check_authentication”,请求discover($url)返回的$server和“/is_valid:true”的preg。这是最后一场预赛失败了。$server url不返回验证,而是说:“您请求的页面无效。”
我要寻找的答案是谷歌应用验证的正确url。紧接着的第二个问题就是url应该是什么样子,我会仔细查看Google应用程序返回的信息,看看我是否有类似的内容
补充:不确定这是否重要,但我确实有一个/.well/host元文件。内容如下:
链接:<;https://www.google.com/accounts/o8/site-xrds?hd=my-domain.com>;;rel=“descripbedbyhttp://reltype.google.com/openid/xrd-op"; type=“application/xrds+xml”
如果您需要更多代码或数据,请告诉我
谢谢,
埃里克B
确保服务器上安装了PHP curl扩展。我们最近在生产中遇到了完全相同的症状,这与服务器资源调配问题有关
如果您正在Debian上运行应用程序,只需使用:
apt get install php5 curl