使用LightOpenID库,我设法在我的网站上成功实现了OpenID。然而,几天前,当使用谷歌作为提供者时,它只是停止工作(使用雅虎运行良好!自从我实现OpenID的那天起,它使用任何提供程序都能很好地运行。我甚至有一些用户使用他们的谷歌帐户登录。然而,奇怪的是,几天前谷歌停止工作(而其他提供商仍然运行良好),在 $openid->validate() 上返回 false
我使用LightOpenID提供的example-google.php文件进行了测试,没有进行任何修改,但我没有运气。我还使用不同的Google帐户进行了测试,也没有运气。我什至在不同的网站上进行了测试,但仍然没有运气。请注意,我正在使用共享主机并安装了 curl,运行版本 7.19.7
谷歌最近是否对其系统进行了任何更改,现在导致这种情况?这个问题还有其他原因吗?
其他人说要启用cURL(这可能是您的问题),但就我而言,cURL已启用。
再窥探一下,我发现请求正在通过 request_streams(),因为函数请求中的以下检查失败(为方便起见进行了格式化):
if (
function_exists( 'curl_init' ) &&
(
!in_array( 'https', stream_get_wrappers() ) ||
!ini_get( 'safe_mode' ) &&
!ini_get('open_basedir' )
)
) {
将其更改为:
if (
function_exists( 'curl_init' ) &&
(
!in_array( 'https', stream_get_wrappers() ) ||
(
!ini_get( 'safe_mode' ) &&
!ini_get( 'open_basedir' )
)
)
) {
希望这有帮助。
编辑:忘了说我不确定谷歌是否确实做了一些改变,但事实上,很多人使用同一个库同时遇到同样的问题,这意味着发生了一些事情,我可以说大多数人可能没有改变任何事情。谷歌可能会轻弹一些开关,以使某些东西更具限制性/安全性。
向此线程添加更多信息。
我也遇到了文件流(在"file_get_contents"上)的问题。如上所述,我强迫卷曲。(仅限谷歌的问题。雅虎工作正常)
使用我的共享主机,我还必须注释掉"CURLOPT_FOLLOWLOCATION"选项。