使用OAuth服务实现图书馆网站与社交网站对接
肖铮
厦门大学图书馆 厦门 361005
摘要

针对如何将社交网站与图书馆网站对接的问题,提出实现社交网站账户登录图书馆网站的功能。通过对社交网站开放平台、图书馆用户使用习惯和图书馆现有网站系统的分析,使用社交网站开放平台OAuth服务和SDK开发包对图书馆网站进行二次开发,实现并证明此功能的有效性和实用性。

关键词: OAuth; 图书馆; 社交网站
Implement Connection Between Library Website and SNS by Using OAuth Service
Xiao Zheng
Library of Xiamen University, Xiamen 361005, China
Abstract

Aiming at how to setup connection between library website and SNS, the paper suggests using SNS accounts logon library website. With the analysis of SNS open platform, library users habit and library website,it uses OAuth and SDK for secondary development, which is proved effective and practical.

Keyword: OAuth; Library; SNS
1 引 言

社交网站是近年来新兴的互联网服务,它以人际关系为纽带,以用户产生的信息为核心[ 1]。社交网站信息传播的即时性、内容分享的高效性以及用户脉络的无限延展性使其在短时间内迅猛发展,以新浪微博、人人网等为代表的社交网站已经成为人们日常生活中的一部分。秉承打造“无处不在的图书馆”理念,图书馆需主动将服务扩展到社交网络上,并且打通社交网站与图书馆网站间的隔阂,建立起两者互相融合的通道,方便读者穿梭其中。在以Facebook为代表的社交网站开放平台引领下,腾讯、新浪微博、人人网等社交网站也构建了各自的开放平台,而OAuth作为开放平台最基础的服务,也为搭建图书馆与社交网站间的桥梁提供了可行性方案。

2 图书馆网站与社交网站对接的可行性分析
2.1 OAuth协议概述

开放授权(Open Authentication,OAuth)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容[ 2]

OAuth协议具有以下特点[ 3]:

(1)简单性:OAuth协议清楚、流程简单,通过HTTP请求和响应完成认证授权,易于理解和使用。已有PHP、Java、Ruby、JavaScript等多种语言的OAuth实现和集成开发包,便于开发人员应用。

(2)安全性:OAuth协议使用基于令牌的安全模式,认证授权过程中不直接使用到第三方网站的账户信息(如用户名和密码),而是使用数字签名和令牌,因此是相对安全的。

(3)开放性:OAuth协议因其本身为开放标准,任何服务提供方都可以实现自身的OAuth认证服务,任何第三方都可以使用服务提供方的OAuth认证服务。

2.2 基于OAuth协议的认证授权基本流程

OAuth认证授权流程中涉及以下三方:

(1)服务提供方(Service Provider):用户使用服务提供方来存储受保护的资源,如微博平台、人人网、腾讯等。

(2)用户(User):存放在服务提供方的受保护的资源的拥有者。

(3)客户端(Consumer):要访问服务提供方资源的第三方应用,如图书馆网站。

OAuth认证授权的基本流程如图1所示:

图1 OAuth认证授权流程图[ 3]

(1)用户访问客户端的网站,请求操作用户存放在服务提供方的资源。

(2)客户端向服务提供方请求访问用户资源,并申请一个临时令牌。服务提供方验证客户端的身份后,授予一个临时令牌。

(3)客户端获得临时令牌后,将用户引导至服务提供方的授权页面请求用户授权。在这个过程中将临时令牌和客户端的回调链接发送给服务提供方。

(4)用户在服务提供方的网页上进行身份验证,然后授权该客户端访问所请求的资源。授权成功后,服务提供方引导用户返回客户端的网页。

(5)客户端根据临时令牌从服务提供方换取访问令牌。服务提供方根据临时令牌和用户的授权情况授予客户端访问令牌。

(6)客户端使用获取的访问令牌访问存放在服务提供方上的受保护的资源,并向用户提供服务。

2.3 支持OAuth服务的社交网站

OAuth1.0协议目前已经成为互联网工程任务小组的一个非正式RFC[ 4],并且随着OAuth2.0的开发与推广,OAuth将为Web应用、桌面应用、手机与其他电器设备提供专门的认证流程[ 2]。凭借Google、Facebook、Yahoo、Microsoft等互联网巨头对OAuth的支持,更多的互联网公司也已加入到OAuth服务的阵营中,OAuth已经成为开放平台认证授权的事实标准。国内互联网公司如新浪、腾讯、人人网、豆瓣网、搜狐、网易、百度等纷纷投身到社交网络与开放平台的建设中,同时也都实现了对OAuth服务的支持。

2.4 图书馆网站与社交网站的对接切入点

据国外调查数据显示,目前国内网民中有41%的人在使用社交网络,其中腾讯、新浪微博、人人网的用户量分别为5.4亿、2.5亿、1.3亿,社交网站超过50%的用户年龄分布在20至34岁,平均每个用户每天在社交网站上消耗2.8小时[ 5]。高校图书馆主要面对的服务对象为校内师生,这类人群恰好是社交网站的重度用户,因此图书馆网站用户和社交网站用户在用户数量上具有较高的重合度。使用基于OAuth协议的认证授权服务,实现图书馆网站和社交网站间的用户对接,是图书馆网站与社交网站对接的最佳切入点[ 6]

3 图书馆网站与社交网站对接的设计及实现

因各社交网站开放平台提供的OAuth服务均基于OAuth标准协议,认证授权流程基本一致,本文着重以新浪微博用户与图书馆用户对接的设计与实现为例进行说明。

3.1 新浪微博平台OAuth开发分析

新浪微博平台是一个基于新浪微博系统的开放信息订阅、分享与交流平台。微博开放平台与平台所有的接入者分享微博庞大的用户资源和关系网络,致力于创造开放共享的互联网环境,构建共赢的互联网生态圈[ 7]。开发者通过开放平台提供的接口,创建个性化的应用并增加自身网站的社交特性。

根据新浪开放平台微博用户登录技术实现介绍中的要求[ 8],需要首先完成以下应用申请审核流程:

(1)完善开发者信息:注册新浪微博账号,并用此账号登录新浪微博开放平台,完善开发者基本信息。建议图书馆注册官方认证微博账号,并且使用图书馆官方微博账号申请应用,以提高应用审核速度和通过率。

(2)提交网站信息:提交图书馆网站信息,验证网站所有权。此步骤需要提供图书馆网站名称、网站域名,并在网站首页添加标签。新浪微博平台会通过程序判断网站是否包含此标签内的参数信息,以确定开发者是否拥有此网站。

(3)获得新浪微博开放平台应用程序的App Key 和App Secret:微博开放平台验证通过应用申请后,会分配相应的App Key 和App Secret。App Key是应用的唯一标识,开放平台通过App Key来鉴别应用的身份。App Secret是应用的密钥,用来保证应用来源的可靠性,防止被伪造。App Key和App Secret将被用于OAuth认证中令牌的生成。

3.2 新浪微博用户与图书馆网站用户对接的总体

技术思路

图书馆网站是读者访问图书馆资源的门户,“我的图书馆”模块则是读者最为常用的功能之一。在“我的图书馆”模块中,读者可查询借阅记录、预约记录、收藏记录等,这些内容均为需要进行读者身份验证后才能获取的个人信息。图书馆网站通常使用读者证号作为用户身份标识,但因读者证号使用范围仅限于图书馆系统,有的读者常常会不记得自己的读者证号,这就给读者在登录“我的图书馆”时制造了一定的麻烦。图书馆网站利用新浪微博平台的OAuth服务实现用户认证授权一站式登录,为读者提供了另外一种登录途径,使读者可用自己熟知的账号来访问图书馆网站。

目前图书馆网站已有自己的读者库,并且有独立的读者登录系统,要实现使用新浪微博账号登录图书馆网站功能,需要对图书馆现有系统进行二次开发。

在对图书馆网站进行二次开发前,首先需要开发者在新浪微博开放平台注册,申请应用程序App Key,并下载相应的SDK开发包。新浪微博开放平台提供多种编程语言的SDK开发包,实现了新浪开放平台的全部或者大部分接口,使开发者不用太关心API接口认证实现等细节,直接调用接口完成特定功能。

开发者使用SDK开发包提供的程序接口,结合图书馆系统,为读者提供新浪微博OAuth认证入口,通过OAuth认证可获取读者微博账号ID,通过图书馆网站认证可获取读者ID,最后将两者进行绑定。绑定成功后,读者便可选择使用新浪微博账号通过微博OAuth认证服务登录图书馆网站。

其中,新浪微博账号与图书馆读者证号间的绑定是关键技术点,其流程如图2所示:

图2 读者信息与社交网站用户信息绑定流程图

过程描述如下:

(1)读者在图书馆网站申请使用新浪微博账号登录。

(2)在新浪微博OAuth验证页面进行身份验证,若身份验证通过,则可获取新浪微博账号信息。然后进行授权,询问是否授权该微博用户访问图书馆网站。

(3)成功授权后,返回图书馆读者身份验证页面,通过身份验证后,可获取图书馆读者证号。

(4)将读者证号与新浪微博账号进行绑定,并写入相关数据表。

读者成功绑定新浪微博账号后,便可使用微博账号登录图书馆网站。使用微博账号登录图书馆网站流程如图3所示:

图3 使用社交网站信息登录图书馆网站流程图

过程描述如下:

(1)读者在图书馆网站点击使用新浪微博账号登录。

(2)在新浪微博进行OAuth身份认证,若身份验证成功,根据新浪微博账户信息查询对应的读者证号。

(3)使用读者信息浏览图书馆网站。

3.3 关键技术实现

厦门大学图书馆OPAC系统使用江苏汇文公司产品,该产品基于PHP开发,因此选用新浪微博的PHP SDK开发包配合OPAC二次开发,实现微博账号登录“我的图书馆”功能。为了记录读者证号与新浪微博账号间的绑定关系,需要新建读者信息与微博账号关联表cert_users,如表1所示:

表1 用户信息关联表cert_users

新浪微博PHP SDK包含两个核心文件weibooauth.php和weiboconfig.php,其中weibooauth.php为新浪微博开放平台的接口实现,weiboconfig.php为配置文件。作为开发者只需要修改weiboconfig.php中的配置信息,即可调用weibooauth.php中的各个接口。

程序实现流程如图4所示:

图4 程序实现流程图

3.4 新浪微博账号登录图书馆网站的应用效果

开发完成后,原图书馆网站上将有“用微博账号登录”的按钮,如图5所示:

图5 图书馆网站登录界面

当读者点击“用微博账号登录”时,会跳转到新浪微博OAuth认证授权页面,如图6所示:

图6 新浪微博OAuth认证授权页面

如果读者还未进行读者证号与新浪微博账号的绑定,则在通过新浪微博OAuth认证授权后,跳转到图书馆系统用户认证页面。如果读者已经进行过读者证号与新浪微博账号间的绑定,则在通过新浪OAuth认证授权后,直接进入“我的图书馆”模块。

根据新浪微博开放平台的统计数据显示,自图书馆网站增加使用新浪“微博账号登录”功能以来,共有787位读者授权使用此应用,通过绑定微博账号与其读者证号,实现使用微博账号登录图书馆网站。

4 结 语

本文提出基于OAuth服务的社交网站与图书馆网站对接的设想,然后通过对OAuth协议的介绍,当前网民使用社交网站的频度、社交网站开放平台发展现状、图书馆用户与社交网站用户重合度等方面数据的分析,论证了设想的可行性。利用新浪微博开放平台提供的OAuth服务与SDK开发包对本馆OPAC系统进行二次开发,实现了新浪微博用户登录图书馆系统的功能。腾讯、人人网等其他社交网站开放平台同样提供OAuth服务,因此也可按照相同的开发思路和技术路线实现腾讯、人人网的用户登录图书馆网站功能。未来,图书馆网站通过OAuth认证服务调用社交网络开放平台API,将用户在图书馆产生的信息分享到社交网络上,实现更为丰富的社交功能,是下一步研究的方向。

参考文献
[1] 社交网络服务[EB/OL]. [2011-12-16]. http://zh.wikipedia.org/wiki/Sns.(SocialNetworkingService[EB/OL]. [2011-12-16]. http://zh.wikipedia.org/wiki/Sns [本文引用:1]
[2] 维基百科OAuth介绍[EB/OL]. [2011-12-16]. http://zh.wikipedia.org/wiki/OAuth.(OAuth[EB/OL]. [2011-12-16]. http://zh.wikipedia.org/wiki/OAuth [本文引用:2]
[3] 基于 OAuth 安全协议的Java 应用编程[EB/OL]. [2012-01-28]. http://www.ibm.com/developerworks/cn/java/j-lo-oauth/index.html.(JavaApplicationProgrammingBasedonOAuthSecurityProtocol[EB/OL]. [2012-01-28]. http://www.ibm.com/developerworks/cn/java/j-lo-oauth/index.html [本文引用:1]
[4] The OAuth 1. 0 Protocol[EB/OL]. [2011-12-16]. http://tools.ietf.org/html/rfc5849. [本文引用:1]
[5] Digital and Mobile in China[EB/OL]. [2011-12-16]. http://wearesocial.net/blog/2011/12/social-digital-mobile-china/. [本文引用:1]
[6] 陈敏豫, 左晶晶, 陈超. 关于图书馆SNS社会性平台的构建与应用[J]. 大学图书情报学刊, 2010, 28(3): 49-51.
(Chen Minyu, Zuo Jingjing, Chen Chao. Establishment and Application of SNS Platform in Digital Libraries[J]. Journal of Academic Library and Information Science, 2010, 28(3): 49-51. ) [本文引用:1] [CJCR: 0.7799]
[7] 新浪微博开放平台概述[EB/OL]. [2011-12-16]. http://open.weibo.com/wiki/平台概述.(SinaWeiboOpenPlatformIntroduction[EB/OL]. [2011-12-16]. http://open.weibo.com/wiki/平台概述 [本文引用:1]
[8] 新浪微博应用开发及申请审核流程指南[EB/OL]. [2011-12-16]. http://open.weibo.com/wiki/新手指南.(SinaWeiboAppDevelopmentandApplicationGuide[EB/OL]. [2011-12-16]. http://open.weibo.com/wiki/新手指南 [本文引用:1]