问题 我正在尝试让 LightOpenID 与 Google Apps Enterprise 帐户一起使用。我收到“未找到服务器!” 当我调用 validate() 时。我模拟了一个快速页面来测试 LightOpenID 的每一步,我已经走得更远了,现在总是得到“is_valid:false”。
到目前为止我所做 的在逐行处理 validate() 和 discover() 时,我注意到某些 openid->data[](认为“openid_*”)值没有进入最终的 params 数组(认为"openid.*") 所以在我下面的例子中我明确地编码了这些。我不知道我是否总是得到 is_valid:false 因为我缺少一个 openid。一些价值,或者如果因为 OpenID 说提供者只应该验证每个随机数一次或其他东西。
你能如何帮助我 如果你已经走到这一步,我可以使用两件事之一。要么指出我的示例代码中的错误,要么给我一个你用来测试这类事情的过程。每次我想测试验证/验证步骤时,我真的必须注销/重新登录吗?是否有任何工具或流程可以加速这种修补?
示例代码我用 example.com 替换了我的域。如果您想要任何输出,请告诉我。谢谢,埃里克 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 "\n\n tBody2: ".$tBody2." \n\n";
}
} catch(ErrorException $e) {
echo $e->getMessage();
}