最早,我使用相关技术的产品体验,是从 Yupoo 开始的,当时还不是用 OAuth, 而是 OpenID. 那时候我也在关注 OpenID, 觉得 Yupoo 很潮,欣然试了一把。使用 OpenID 登录过程很顺利(我甚至开通了 myopenid 的语音检验),但是回到 Yupoo 之后,我发现系统居然要求我输入新用户名和密码。虽然有点纳闷,还是抱着小白鼠的心态,输入了新帐户信息。
而今,曾经被热捧的 OpenID 技术逐渐式微,OAuth 方案随着 Twitter 的崛起已成为事实上的帐户验证和连接标准。
毫无疑问,OAuth 可以加强用户登录的动力,而新用户登录即意味着注册用户量的增长。所以 OAuth 是个快速提升用户数的好方法(创业网站太需要这个数字了)。
用户首次 OAuth 登录时,可能需要输入两种密码(登录外部帐户和创建本系统帐户)才能完成全部登录流程,这样增加了用户的输入成本。不过,最近我注意到,越来越多的网站在站外登录后仍然要求创建本系统内的帐户,连一直和 Twitter 保持紧密联系的 bit.ly 都开始要求用户注册本地帐户。当然,还有今天了解到的丁香园站外登录。
为什么要这样?表面上看,原因很简单——用户是你网站的全部,你不能把最重要的资产托付给别人。进一步思考,即便你的网站现在完全信任外部登录提供方,你也必须走上这条路,因为:
- OAuth 得到的信息是有限并且受限的。你提供特定的服务往往需要进一步获知用户的资料,比方说你需要用户的真实姓名,QQ 无法提供给你。受限意味着你不能随心所欲访问你想要的信息,登录提供方和用户都可能有意无意调整授权策略,从而让你的数据请求无功而返。
- 外部登录帐户不可能永远满足你的需求。你的系统在壮大,你的业务方向可能会调整,你的系统架构必须不断改进——你需要灵活地控制帐户体系,才有可能满足这些变化。
- 关联使得新帐户仍然保有与外部网站交换信息的能力,这对社会化功能来说很重要。
- 生意场上没有永远的朋友。
结论:OAuth 是个好技术,善用才能用好。