我已经下载了LightOpenID (http://gitorious.org/lightopenid),它可以工作,但几天前停止了。我的代码:
<?php
require 'openid.php';
try {
if(!isset($_GET['openid_mode'])) {
if(isset($_GET['login'])) {
$openid = new LightOpenID('my-domain.com');
$openid->identity = 'https://www.google.com/accounts/o8/id';
$openid->required = array('namePerson/friendly', 'contact/email');
header('Location: ' . $openid->authUrl());
}
?>
<form action="?login" method="post">
<button>Login with Google</button>
</form>
<?php
} elseif($_GET['openid_mode'] == 'cancel') {
echo 'User has canceled authentication!';
} else {
$openid = new LightOpenID('my-domain.com');
echo 'User ' . ($openid->validate() ? $openid->identity . ' has ' : 'has not ') . 'logged in.';
}
} catch(ErrorException $e) {
echo $e->getMessage();
}
echo '<pre>'.print_r($openid,true).'</pre>';
?>
在本地主机上,它可以工作,但在 Web 服务器上不起作用。
编辑:我找到了旧版本的LightOpenID并且它可以工作。
request_streams() 方法存在问题,我通过注释第 352 行并将其替换为返回$data来解决它;
//return file_get_contents($url, false, $context);
return $data;