0

我正在使用最新的 Janrain openid 库示例,发现过程似乎与 Yahoo、myopenid.com 和其他人配合得很好......

但我被谷歌端点(https分号//www.google.com/accounts/o8/id)困住了。在我被重定向到谷歌页面之前,Consumer.php 只返回一个 406 apache 错误。

我所有的安装都可以在这里找到:http: //www.coplango.com/vendor/openid/examples/

  • 单击消费者尝试消费者示例,但 discovery.php 以同样的方式失败,证明它发生在发现期间......
  • 您还可以检查 detect.php 以检查我的安装 - HTTP 获取测试失败并显示 503,因为它试图到达返回 503 的地址。休息很好。

我认为这取决于 php-yadis 指定Accept: application/xrds+xml标头,但我检查了代码,并且其他类型也被接受,例如text/htmlapplication/xhtml+xml.

有人遇到过这个吗?

有什么线索吗?

非常感谢你!

4

3 回答 3

2

行,

我进行了进一步调查,这似乎取决于我的提供者,如果任何包含死亡词“/id”的字符串作为 GET 参数传递,他会返回 406 错误。我花了好几天才弄清楚这不是 openid !

有关信息,我正在使用 PlanetHoster,如果有人遇到过这个。我已经向他们发送了票务请求并等待他们的答复。

于 2009-10-01T09:57:07.187 回答
1

在我的机器上运行消费者示例,我收到以下错误:

Got no response code when fetching https://www.google.com/accounts/o8/id
CURL error (60): SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

这意味着 curl 无法验证 google 的 https 服务器证书。您可以通过向 curl 提供 CA 证书以通过CURLOPT_CAINFO/验证 google 的证书CURLOPT_CAPATH,或者 - 更容易 - 通过停止验证证书来解决此问题CURLOPT_SSL_VERIFYPEER。以下更改Auth/Yadis/ParanoidHTTPFetcher.php为我完成了后者:

--- ParanoidHTTPFetcher.php.orig        2009-04-22 02:31:20.000000000 +0800
+++ ParanoidHTTPFetcher.php     2009-09-30 22:35:24.093750000 +0800
@@ -127,6 +127,9 @@
                         Auth_OpenID_USER_AGENT.' '.$curl_user_agent);
             curl_setopt($c, CURLOPT_TIMEOUT, $off);
             curl_setopt($c, CURLOPT_URL, $url);
+
+            // don't verify server cert
+            curl_setopt($c, CURLOPT_SSL_VERIFYPEER, FALSE);

             curl_exec($c);

当然,您的 curl 安装还必须支持 ssl - 检查您的phpinfo(). 另外,如果CURLOPT_SSL_VERIFYPEER禁用,CURLOPT_SSL_VERIFYHOST可能还需要TRUEFALSE

另请参阅http://www.openrest.eu/docs/openid-not-completely-enabled-for-google.php(通过相关 的为什么 Google OpenID 提供程序不能在我的服务器上使用 PHP-OpenId?)。

于 2009-09-30T15:01:15.380 回答
0

解决方案:

在 .htaccess 文件中放

SecFilterEngine Off
于 2012-01-04T17:09:29.840 回答