这是一个非常详细的教程,它将指导那些已经拥有了用户的网站,如何来一步一步实现对OpenID的支持。它将解释如何让新用户使用OpenID的URL来注册帐号,并让原有用户轻松绑定他们的OpenID。这个教程看起来有些长,因为我的目的是希望你不用做任何思考,在看完文章的时候就可以轻松搞定这些事情。
概况
首先我假定你的网站已经具备了以下的条件:
1.一个用户信息数据库;
- 每个用户有唯一的内部ID,用户通过他们的帐号(e-mail)和密码登陆。
2.完善的注册新用户和收集基本信息的流程;
3.有验证用户的登陆页面;
- 通过用户的帐号(e-mail)和密码验证用户身份,并在网站其他地方依赖用户ID作为用户身份的象征。
4.有专门的页面用来管理账户信息。
如果你的网站不像以上所说的,你首先应该将它改造成这样,虽然某些细节可能有些出入。
下面是需要给你的网站增加的大体内容:1.一个存储OpenID和用户的内部ID关系的数据表;
- 它们之间是多对一的关系(每个用户可以绑定多个OpenID,但是一个OpenID只能属于一个用户)。
- 这个表将用来通过OpenID查询所有的用户,因此必须是单独的一个数据表。
2.需要在注册界面上增加一些有关OpenID的内容;
- 新用户将输入他们的OpenID,通过其对应的提供者来验证,并返回到你的注册页面,选择性提供他们想在你的网站上共享的资料。
3.对现有用户,也需要在登陆页面增加一点内容;
- 已经绑定OpenID的用户可以直接输入OpenID,通过对应提供者验证用户身份,并返回到你的网站的验证页面,并通过OpenID和用户ID的对应关系找到对应的帐号,就像他们输入了帐号(e-mail)和密码一样。
4.一个OpenID的设置界面,需要提供对绑定到用户帐号的OpenID的浏览、添加、删除的功能。
下面是你将创建的简要内容:1.一个OpenID数据表
- 数据列:(openid_url,user_id)。openid_url是字符串,user_id是你当前用户标识身份的ID。
- 把openid_url设为主键(唯一,用来通过OpenID查找用户)
- 创建user_id的索引(用来对指定帐号列举其绑定的OpenID)
2.对用户输入的OpenID进行查询并重定向到OpenID提供者的动态页面
- 检查用户输入的OpenID已经被站内用户绑定过了
- 重定向到OpenID提供者(使用OpenID库),这样用户才能被授权(详情稍候讲解)
3.处理OpenID提供的应答的动态页面。
- 需要核实应答(使用OpenID库)
- 对于新用户,你需要按照注册流程先预先填充从OpenID提供者返回的注册信息,并且需要绕过注册流程,使他们不需要提供密码(因为他们以后将通过OpenID直接登陆)。
- 对于已经注册的用户,你需要绑定已经被验证过的OpenID到他们的账户上(如果是他们是第一次使用它)。
4、用来管理用户绑定的OpenID的动态页面
- 能获取和浏览所有绑定到当前登陆帐号的所有OpenID。
- 能让用户绑定新的OpenID。
- 能让用户删除已经绑定过的OpenID。
5.在删除用户的代码中增加删除该用户绑定过的OpenID的功能。
在正式开始之前你可能需要下面的资源:1.选择一种程序语言的OpenID用户库,
点击查看各种语言的用户库。
2.放置在你的网站界面的标准OpenID图形。比如
小图标和logo(
小、
正常、
PDF)。
3.利用一些OpenID提供者来进行测试。比如
MyOpenID.com、
LiveJournal、和
ClaimID。另外,如果你有AOL/AIM的帐号,你可以用http://openid.aol.com/USERNAME作为一个OpenID(USERNAME代表你的帐号)。
实现OpenID用户支持能立刻享受以下这些好处:1.1.2亿使用OpenID的用户将更容易、迅速地注册到你的网站,因为他们不再需要创建并记住心得帐号和密码。
2.当你开始收集你用户的OpenID时,你网站的用户将能更容易地享受到很多基于OpenID的服务。
3.通过支持这个举足轻重的在线身份的开放标准,你将证明你的想法和对会员的承诺。
另外,随着对OpenID支持的不断增多,你将可能享受到更多的好处:1.自动链接到会员在别的网站的帐号,从而共享信息给Mashup,避免用户在不同的地方多次输入重复的信息。
2.当会员在别的网站更改信息时,你能更轻松地获取到他们的最新动态。
3.接受别的网站或服务提供的可信服务,比如年龄确认,e-mail认证,群组会员资格验证等等。
(待续,后文将讲述具体的实现,敬请关注)
【本文翻译仅为外语学习及阅读目的,原文作者个人观点与译者及译言网无关】