• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

OpenID with PHP

php 搞代码 4年前 (2022-01-23) 13次浏览 已收录 0个评论

AVBlog2.0开发手记之一

打酱油先

OpenID已经不算是新鲜事物了,不过至今仍然是处于叫好不叫座的尴尬状态。推广的策略是一方面,从用户体验的角度来看,登录过程中会有可能跳转到OpenID网站,这是对已经习惯了普通注册登录流程的用户一个极大的考验。所以像Facebook Connect这样更简洁的应用反而更容易获得市场。也许OpenID想要获得广泛应用还需要不少改进之处,但OpenID的理念,毫无疑问会在未来大放异彩。

不过这些和本次的Blog并无太大关系,我只是出来打酱油的:P

想要让自己的网站支持OpenID,门槛并不算高,以下以PHP为例,记述PHP环境下OpenID登录过程的开发。

准备工作

OpenID的通讯过程已经有很多库封装好了,在OpenID Wiki里可以看到不少PHP类库,本次我们选择JanRain的OpenID Enabled。

最新的版本是Version 2.1.2,基于OpenID2.0协议,下载到本地后直接运行examples文件夹里的detect.php,可以根据提示调整开发环境,最低限度需要PHP的PEAR支持。具体情况可以根据提示灵活处理,环境调整的工作这里一笔带过。

运行Demo

客户端登录,已经有现成的Demo可供参考,运行examples/consumer/index.php,输入我们想要验证的OpenID然后提交,Win32环境下会很不幸的出现无法创建/tmp/_php_consumer_test的错误。这是为了保存登录过程中的临时文件,修改examples/consumer/common.php第53行,改为相对目录。

本2文来*源gao($daima.com搞@代@#码(网搞gaodaima代码

    $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;}

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:OpenID with PHP

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址