任何人都可以将openid简单的逐步集成发布到已经拥有登录系统的网站吗?
我决定使用PHP OpenID 2.1.3,但可以从哪里开始和做什么。
答案 0 :(得分:3)
我认为您最好的选择是使用Zend Framework中的OpenID模块。它可以单独使用,而不必使用整个框架,并且它们对如何使用它有一个相当简单的解释on their manual pages。这很简单(如果您理解OpenID的概念):
login_page.php:
// Load the library Zend Framework way, or load it yourself...
// Always good to pick apart the library anyway, to see how it works:
Zend_Loader::loadClass('Zend_OpenId');
$consumer = new Zend_OpenId_Consumer();
if(!$consumer->login($_POST['openid_identifier'], 'redirect_to.php'))
{
die('OpenID login failed.');
}
redirect_to.php:
Zend_Loader::loadClass('Zend_OpenId');
$consumer = new Zend_OpenId_Consumer();
if($consumer->verify($_GET, $id))
{
echo htmlspecialchars($id).' is a valid ID.';
}
else
{
// redirect to "login.php?login=failed".
if(!headers_sent())
{
header('HTTP/1.1 307 Temporary Redirect', true, 307);
header('Location: login.php?login=failed');
}
else die('Invalid ID.');
}
使用它比php-openid提供的PHP OpenID库(OpenID Foundation)容易得多。
编辑: 如何实施Zend_OpenId(以回应评论)。
下载latest Zend Framework,然后解压缩文件夹ZendFramework-1.9.2/library/Zend/OpenId
。
但是你需要做一些事情:
[...]/OpenId/Exception.php
中的类扩展值从Zend_Exception
更改为Exception
。现在您可以通过以下方式引用这些类:
require_once '/path/to/OpenId/Consumer.php';
$consumer = new Zend_OpenId_Consumer();
// If you plan on making your own OpenID's, use 'Provider' instead of 'Comsumer'.
require_once '/path/to/OpenId/Provider.php';
$provider = new Zend_OpenId_Provider();
现在,我能给你的最好的建议是阅读手册!不要指望它第一次工作...... Zend的实现可能更容易,但这并不能阻止OpenID成为痛苦的屁股!
答案 1 :(得分:0)
不,没有简单的指南。有太多的登录系统和不同的实现,使这简单明了。
对于特定的脚本,请尝试使用Google搜索。对于任何其他脚本,您必须将OpenID集成到您的应用程序中。如果您使用MVC,那么您很幸运:查看用户模型并将OpenID插入其中。
答案 2 :(得分:0)
Plaxo的约瑟夫·斯马尔(Joseph Smarr)为OpenID启用网站编写了nice recipe几年的激励。