OpenID Enabled的PHP库
2009年07月24日OpenID的通讯库在OpenID Wiki里可以看到不少。这里我们介绍JanRain的OpenID Enabled。
最新的版本是Version 2.1.3,基于OpenID2.0协议,下载到本地后直接运行examples文件夹里的detect.php,可以根据提示调整开发环境,最低限度需要PHP的PEAR支持。在windows下主要配置是要改一下php.ini,打开两个配置项,使之可以使用CURL和GMP。
extension=php_curl.dll extension=php_gmp.dll
运行Demo
客户端登录,已经有现成的Demo可供参考,运行examples/consumer/index.php,输入我们想要验证的OpenID然后提交,Win32环境下会很不幸的出现无法创建/tmp/_php_consumer_test的错误。这是为了保存登录过程中的临时文件,修改examples/consumer/common.php第53行,改为相对目录。
$store_path = "./_php_consumer_test";
重新运行Demo,仍然报错
Fatal error: Define Auth_OpenID_RAND_SOURCE as null to continue with an insecure random number generator.
在Auth\OpenID\CryptUtil.php的第23行,这里定义了Auth_OpenID_RAND_SOURCE会通过一个特定文件用来生成随机数,这里可以指定本机的一个文件,也可以直接定义为null。
define('Auth_OpenID_RAND_SOURCE', null);
至此如果运行环境没有问题的话,客户端登录的Demo已经可以成功运行了。运行中的例子可以看:这里
数据库模式运行
上面的例子采用了文件的方式保存登录过程中的临时文件,OpenID Enabled同时也提供了数据库方式的存储,数据库连接部分是基于PEAR的DB类实现。以Mysql为例,修改examples/consumer/index.php的getStore函数如下:
function &getStore() {
require_once "Auth/OpenID/MySQLStore.php";
$db =& DB::connect(array(
'phptype' => 'mysql',
'username' => 'root',
'password' => 'root',
'hostspec' => 'localhost',
'database' => 'blog'
));
$store = new Auth_OpenID_MySQLStore($db);
$store->createTables();
return $store;
}
变量$db指定了数据库链接信息,运行后会发现数据库里自动建立了两个表
oid_associations和oid_nonces,用于存储OpenId登录信息。
一月 11th, 2010 at 上午 8:46
試過自己建置,和貴站的demo,都顯示”OpenID authentication failed: Server denied check_authentication“
是怎么回事啊?
一月 11th, 2010 at 下午 6:35
试过demo没有问题呀,到http://openid.bluesky.cn申请一个openid账号然后在demo那里输入测试。