几年太晚了,但这可能与在 Windows 平台上使用Janrains PHP OpenID 2.2.2库的用户有关。我仍在使用 PHP 5.2.17。
我的简单测试是使用examples/discover.php 程序并传递Google 的OpenID URL ( https://www.google.com/accounts/o8/id ) ,以确保该库与Google 联系。
根据说明,标准步骤是启用 GMP(取消注释扩展名=php_gmp.dll)和 CURL(取消注释扩展名=php_curl.dll)。XML 应该已经启用。
您可能还需要在 contrib/google 中提取包并确保 google_discovery.php 和 ca-bundle.crt 在 Auth/OpenID 中。
额外的偏执狂可以从examples/detect.php 开始,以确保它们的设置正确。预计您将通过除密码随机性测试之外的所有测试。为此,您需要添加
define('Auth_OpenID_RAND_SOURCE', null);
到examples/detect.php的顶部。当您在那里时,将其添加到examples/consumer/common.php(因为examples/discover.php 使用它)。
现在,即使在这一切之后,Google OpenID URL 的发现也失败了。我正在进入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
php 错误日志。
在 Windows 环境中,您需要 CURLOPT_CAINFO 的定义。为了我的快速测试,我curl_setopt($c, CURLOPT_CAINFO, dirname(__FILE__)."/../OpenID/ca-bundle.crt");
在 Auth/Yadis/ParanoidHTTPFetcher.php 中的 curl_exec() 语句之前添加。
这允许examples/discover.php 发现Google URL 提供的服务。
作为在 Windows 中设置 CURLOPT_CAINFO 的长期解决方案,您可能希望参考此 StackOverflow 答案,以便您可以将设置添加到 php.ini。