OpenID验证的最后一步,始终返回" is_valid:false”

问题我正在尝试让LightOpenID与Google Apps Enterprise帐户配合使用。我得到“没找到服务器!”当我调用validate()时。我嘲笑了一个快速页面来测试LightOpenID的每一步,我已经变得更远,现在总是得到“is_valid:false”。 我到目前为止做了什么 在逐行处理validate()和discover()时,我注意到某些openid-> data [](想想“openid_ *”)值没有进入最终的params数组(想想“openid。*”)所以在下面的例子中,我明确地编写了这些代码。 我无法判断我是否总是得到is_valid:false因为我缺少openid.something值,或者因为OpenID说提供者只应该验证每个nonce一次或其他什么。 你如何帮助我如果你已经走到这一步,我可以使用两件事之一。要么在我的示例代码中指出错误,要么给我一个你用来测试这种事情的过程。每次我想测试验证/验证步骤时,是否真的必须注销/返回?是否有任何工具或流程可以加速这种修补? 示例代码我用example.com替换了我的域名。如果您想要任何输出,请告诉我。 谢谢,Eric B.
try {
    $openid = new LightOpenID;
    if(!$openid->mode) {
        if(isset($_GET['login'])) {
            //$openid->identity = 'https://www.google.com/accounts/o8/id';
            $openid->identity = 'https://www.google.com/accounts/o8/site-xrds?hd=example.com';
            header('Location: ' . $openid->authUrl());
        }
?>
<form action="?login" method="post">
    <button>Login with Google</button>
</form>
<?php
    } elseif($openid->mode == 'cancel') {
        echo 'User has canceled authentication!';
    } else {
$tClaimedID = 'https://www.google.com/a/example.com/o8/ud?be=o8';
$openid->data['openid_claimed_id'] = $tClaimedID;

foreach (explode(',',$openid->data['openid_signed']) as $item) {
  $value = $openid->data['openid_'.str_replace('.','_',$item)];
  $params['openid.'.$item] = get_magic_quotes_gpc()?stripslashes($value):$value;
}
$params['openid.mode'] = 'check_authentication';
$params['openid.ns'] = $openid->data['openid_ns'];
$params['openid.signed'] = $openid->data['openid_signed'];
$params['openid.sig'] = $openid->data['openid_sig'];

$tBody2 = $openid->request($tClaimedID,'POST',$params);
echo "nn tBody2: ".$tBody2." nn";

    }
} catch(ErrorException $e) {
    echo $e->getMessage();
}
    
已邀请:
LightOpenID正在您的服务器上寻找
/openid
以搜索XRDS文档。 在对
/openid
文档做出的任何响应中添加以下内容:
<?php
  header('X-XRDS-Location: https://www.google.com/accounts/o8/site-xrds?hd=example.com');
?>
你尝试登录后的原因 在,谷歌返回一个身份。必须发现这种身份 看它是否指向有效的openid提供者(所以它不是 欺骗他们)。由于Gogole会返回您域中的身份,因此 必须添加Google授权发布的信息。 信息必须是
/openid
,因为 身份的形式为:
http://example.com/openid?[...]
。 否则,LightOpenID打开该url,看不到任何指向任何url 服务器,并返回“找不到服务器!”。     
嗨,我面临同样的问题并解决它:),你应该需要禁用安全模式:关闭,这对我有用:)     

要回复问题请先登录注册