Php OpenID/LightOpenID:validate()失败

Php OpenID/LightOpenID:validate()失败,php,openid,lightopenid,Php,Openid,Lightopenid,我正在使用LightOpenID库尝试通过OpenID注册用户。除了validate()总是失败之外,谷歌的身份验证似乎一切正常。我正在转储$openid,所有数据似乎都正常,但validate()仍然失败 我看到了这个问题,但我的问题略有不同,因为我确定响应不是找不到的服务器,而是服务器出于某种原因响应为有效:false。为什么会这样 以下是我的做法(在拉雷维尔): //使用Google进行测试 试一试{ $openid=新的LightOpenID(); 如果(!$openid->模式){ $

我正在使用LightOpenID库尝试通过OpenID注册用户。除了validate()总是失败之外,谷歌的身份验证似乎一切正常。我正在转储$openid,所有数据似乎都正常,但validate()仍然失败

我看到了这个问题,但我的问题略有不同,因为我确定响应不是找不到的服务器,而是服务器出于某种原因响应为有效:false。为什么会这样

以下是我的做法(在拉雷维尔):

//使用Google进行测试
试一试{
$openid=新的LightOpenID();
如果(!$openid->模式){
$openid->required=array('contact/email');
$openid->identity=https://www.google.com/accounts/o8/id';
返回Redirect::to($openid->authURL());
}else if($openid->mode==“取消”){
echo“用户已取消身份验证。”;
}否则{
$attributes=$openid->getAttributes();
//调试
echo($openid->validate())?“已登录”:“未登录”;

我也遇到过同样的问题。在绞尽脑汁试图解决这个问题后,我发现这个问题似乎是由于添加了
$openid->required=array('contact/email');


删除或注释掉该行,它将重新开始工作。为什么我不确定。

您没有将参数传递给构造函数,这将表明您使用的是旧版本的库。尝试一个,它可能会解决您的问题。我发现了完全相同的问题。这真的很愚蠢,因为当验证失败时,它将返回emai我的实现没有使用curl,即使它已经安装了。因为另一个影响它的设置(我不能更改)。有人在这方面取得了任何进展吗?
// testing with Google
try {
    $openid = new LightOpenID();
    if (!$openid->mode) {
        $openid->required = array('contact/email');
        $openid->identity = 'https://www.google.com/accounts/o8/id';
        return Redirect::to($openid->authURL());
    } else if ($openid->mode == "cancel") {
        echo "User has canceled authentication.";
    } else {
        $attributes = $openid->getAttributes();

        // debugging 
        echo ($openid->validate()) ? "Logged in " : "Not logged in ";
        ?><pre><?php echo var_dump($openid);?></pre><pre><?php
        echo var_dump($attributes);?></pre><?php
    }
} catch (ErrorException $e) {
    echo $e->getMessage();
}
return View::make('home.index');