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登录信息。





标签: ,
归类: OPENID

2 Responses to “OpenID Enabled的PHP库”

  1. yeurus Says:

    試過自己建置,和貴站的demo,都顯示”OpenID authentication failed: Server denied check_authentication“
    是怎么回事啊?

  2. 蓝天 Says:

    试过demo没有问题呀,到http://openid.bluesky.cn申请一个openid账号然后在demo那里输入测试。

Leave a Reply

*

您也可以使用微博账号登陆