鄒壯達(dá),譚 建(湖南財(cái)政經(jīng)濟(jì)學(xué)院 公共實(shí)驗(yàn)中心,湖南 長(zhǎng)沙 410205)
基于互聯(lián)網(wǎng)開(kāi)放平臺(tái)的統(tǒng)一用戶系統(tǒng)設(shè)計(jì)
鄒壯達(dá),譚建
(湖南財(cái)政經(jīng)濟(jì)學(xué)院公共實(shí)驗(yàn)中心,湖南長(zhǎng)沙410205)
摘要:本文利用各開(kāi)放平臺(tái)的OpenAPI、通過(guò)OAuth2.0協(xié)議等技術(shù)實(shí)現(xiàn)了一個(gè)統(tǒng)一用戶平臺(tái),解決了各個(gè)開(kāi)放平臺(tái)用戶之間相互通信的問(wèn)題.
關(guān)鍵詞:開(kāi)放平臺(tái);OpenAPI;OAuth2.0
縱觀互聯(lián)網(wǎng)的入口流量分配方式,大體可以分為導(dǎo)航時(shí)代、搜索時(shí)代和開(kāi)放時(shí)代三個(gè)時(shí)代.互聯(lián)網(wǎng)的發(fā)展由以內(nèi)容為中心主逐步向以用戶為中心轉(zhuǎn)化.尤其是隨著社交化平臺(tái)的興起,互聯(lián)網(wǎng)成為了一個(gè)人人可以表述自己觀點(diǎn)的大社交平臺(tái).
同時(shí),隨著新web技術(shù)的應(yīng)用,越來(lái)越多的系統(tǒng)中擁有與用戶相關(guān)的信息,而這些系統(tǒng)又是封閉的,并且相互之間獨(dú)立,于是引發(fā)了各種問(wèn)題[1].
1.信息和資源的碎片化:信息和資源、信息和信息、資源和資源之間缺乏多樣性的關(guān)聯(lián)化組織;2.應(yīng)用碎片化:用戶需要所使用的各種應(yīng)用在不同的網(wǎng)站,相互之間缺乏關(guān)聯(lián),使用不便;3.關(guān)系碎片化:用戶需要在各種不同的網(wǎng)站注冊(cè)ID,并擁有各自不同的并且獨(dú)立的關(guān)系;4.用戶碎片化:相關(guān)信息、應(yīng)用、資源、關(guān)系的分裂,造成用戶自身呈現(xiàn)為碎片化的特點(diǎn).
在互聯(lián)網(wǎng)時(shí)代,把網(wǎng)站的服務(wù)封裝成一系列計(jì)算機(jī)易識(shí)別的數(shù)據(jù)接口開(kāi)放出去,供第三方開(kāi)發(fā)者使用,這種行為叫做Open API[2],提供Open API的平臺(tái)本身就被稱為開(kāi)放平臺(tái)[3—5].
各大互聯(lián)網(wǎng)公司或出于整體戰(zhàn)略考慮,或出于經(jīng)濟(jì)利益考慮,都紛紛開(kāi)放自身平臺(tái).如何利益這些開(kāi)放平臺(tái),跨越產(chǎn)品屏障,整合互聯(lián)網(wǎng)碎片,是本文研究的重點(diǎn).本文將在這些開(kāi)放平臺(tái)的基礎(chǔ)上,設(shè)計(jì)一個(gè)新型的社交化系統(tǒng),目標(biāo)是以用戶為中心,整合信息碎片,減少網(wǎng)絡(luò)社交過(guò)程中的屏障.
通過(guò)開(kāi)放平臺(tái),網(wǎng)站不僅能提供對(duì)Web網(wǎng)頁(yè)的簡(jiǎn)單訪問(wèn),還可以進(jìn)行復(fù)雜的數(shù)據(jù)交互,將它們的Web網(wǎng)站轉(zhuǎn)換為與操作系統(tǒng)等價(jià)的開(kāi)放平臺(tái).第三方開(kāi)發(fā)者可以基于這些開(kāi)放平臺(tái)而開(kāi)發(fā)豐富多彩的應(yīng)用.
如圖1.1,展示了互聯(lián)網(wǎng)開(kāi)放平臺(tái)與第三方應(yīng)用之間的關(guān)系.
圖1.1互聯(lián)網(wǎng)開(kāi)放平臺(tái)與第三方應(yīng)用
2.1與開(kāi)放平臺(tái)通信的技術(shù)基礎(chǔ)OAuth2.0協(xié)議
OAuth2.0[6]是一個(gè)開(kāi)放授權(quán)協(xié)議,允許第三方應(yīng)用訪問(wèn)服務(wù)提供方中注冊(cè)的終端用戶的某些資源,且不會(huì)把帳號(hào)和密碼提供給第三方.
OAuth2.0允許通過(guò)服務(wù)提供商授予的一個(gè)臨時(shí)令牌而不是用戶名密碼來(lái)獲取用戶的資源,這些資源可以是受限的,令牌的時(shí)間段也可以是受限的.
OAuth2.0的參與者:
1.資源所有者RO(Resource Owner).存放在服務(wù)提供方的受保護(hù)的資源的擁有者.
2.資源服務(wù)器RS(Resource Server).資源服務(wù)器存儲(chǔ)資源,并處理對(duì)資源的訪問(wèn)請(qǐng)求.
3.第三方應(yīng)用或服務(wù)提供者Client.第三方應(yīng)用獲得RO的授權(quán)后便可以去訪問(wèn)RO的資源.
4.授權(quán)服務(wù)器AS(Authorization Server).授權(quán)服務(wù)器認(rèn)證RO的身份,為RO提供認(rèn)證審批流程,并最終頒發(fā)授權(quán)令牌(Access Token).(為了便于協(xié)議的描述,這里只是在邏輯上把AS與RS區(qū)分開(kāi)來(lái);在物理上,AS與RS的功能可以由同一個(gè)或者同一組服務(wù)器來(lái)提供服務(wù).)
三個(gè)節(jié)點(diǎn)(Endpoints):
1.Request Token.獲取授權(quán)令牌.
2.User Authorization.重定向的URI,讓用戶授權(quán).
3.Access Token Request.獲取訪問(wèn)令牌.
圖2.1 OAuth2.0授權(quán)與資源獲取過(guò)程
2.2以第三方開(kāi)發(fā)者的身份從開(kāi)放平臺(tái)獲取用戶的資源授權(quán)
第三方開(kāi)發(fā)者,通過(guò)OAuth2.0協(xié)議獲取用戶授權(quán)后可以獲取該用戶的信息,并且可以以該用戶的身份在開(kāi)放平臺(tái)進(jìn)行功能操作.因此,若在多個(gè)平臺(tái)獲取多個(gè)用戶的授權(quán),便可以使得所有用戶跨越平臺(tái)進(jìn)行信息和功能的相互交流、共享.因而可以消除互聯(lián)網(wǎng)中的信息化與功能碎片.
要實(shí)現(xiàn)統(tǒng)一的用戶系統(tǒng),需要解決3個(gè)方面的問(wèn)題:(1)每個(gè)開(kāi)放平臺(tái)的API雖然都是以O(shè)Auth2.0協(xié)議為基礎(chǔ),但具體實(shí)現(xiàn)各不相同.(2)每個(gè)用戶在不同的開(kāi)放平臺(tái)中有不同的身份,需要將身份進(jìn)行唯一性認(rèn)證.3、每個(gè)用戶在不同的開(kāi)放平臺(tái)擁有不同的關(guān)聯(lián)用戶,這些“關(guān)系圈”需要進(jìn)行維護(hù),確保關(guān)系不會(huì)混亂.
3.1以模塊方式實(shí)現(xiàn)各開(kāi)放平臺(tái)API對(duì)接,以接口方式實(shí)現(xiàn)內(nèi)部統(tǒng)一調(diào)用.如圖3.1.
3.2收集授權(quán)的個(gè)人信息,確定用戶身份的唯一性.由于用戶在多個(gè)放平臺(tái)注冊(cè)會(huì)產(chǎn)生身份信息碎片,所以必須要能準(zhǔn)確判斷用戶身份,消除身份信息碎片.可以采用身份證信息認(rèn)證、自行注冊(cè)平臺(tái)身份、手機(jī)號(hào)判斷、Email地址判斷、cookie信息收集、IP地址判斷等各種手段來(lái)確定身份.
圖3.1對(duì)接API模塊統(tǒng)一接口
圖3.2用戶身份唯一性身份確認(rèn)模塊
3.3歸并算法處理用戶關(guān)系圈冗余.基于用戶關(guān)系圈的特性可以采用歸并(Merge)算法對(duì)User的關(guān)系圈進(jìn)行計(jì)算,從而達(dá)到關(guān)系唯一性的要求,消除關(guān)系碎片.將user對(duì)象視為節(jié)點(diǎn)A,user在各開(kāi)放平臺(tái)的關(guān)系用戶視為節(jié)點(diǎn)B1、B2……Bn.那么A節(jié)點(diǎn)的關(guān)系碎片如圖3.3所示:
圖3.3原始用戶關(guān)系
歸并算法原理是將2個(gè)序列合并到一個(gè)序列里,其工作原理如下:(1)申請(qǐng)內(nèi)存空間,大小等于2個(gè)序列之和.(2)設(shè)定2個(gè)指針,最初位置分別為2個(gè)序列的起始位置.3、比對(duì)合并序列,如果合并序列存在當(dāng)前值則拋棄,如果不存在,則將當(dāng)前值加入到合并序列.在本系統(tǒng)中,歸并算法結(jié)合實(shí)際情況的活動(dòng)狀況如活動(dòng)圖3.4所示.
圖3.4歸并算法流程圖
合并以后,用戶關(guān)系如圖3.5所示:
圖3.5維護(hù)后的用戶關(guān)系
3.4系統(tǒng)數(shù)據(jù)庫(kù)ER圖.根據(jù)需求分析以及關(guān)鍵模塊設(shè)計(jì),數(shù)據(jù)庫(kù)應(yīng)該存儲(chǔ)的對(duì)象包括用戶身份信息、開(kāi)放平臺(tái)信息,外部關(guān)系信息,內(nèi)部關(guān)系信息,接入站點(diǎn)信息等.
映射到數(shù)據(jù)庫(kù)中:
用戶信息:user表
開(kāi)放平臺(tái)信息:open_plat表
外部關(guān)系信息:extetnal_relation表
內(nèi)部關(guān)系信息:interior_relation表
接入站點(diǎn)信息:site表
圖3.6為根據(jù)數(shù)據(jù)庫(kù)第二范式規(guī)范設(shè)計(jì)的數(shù)據(jù)庫(kù)ER圖.
圖3.6系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
在數(shù)據(jù)庫(kù)查詢數(shù)量增長(zhǎng)到一定數(shù)量級(jí)時(shí),(1)減少聯(lián)合查詢,(2)高效利用索引、復(fù)合索引以及覆蓋索引,(3)高效利用查詢緩存,(4)進(jìn)行分表等,是有效提高數(shù)據(jù)庫(kù)效率的主要途徑.所以,在設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí),在滿足功能需求后,優(yōu)化數(shù)據(jù)庫(kù)為以上后續(xù)優(yōu)化步驟提供途徑,是設(shè)計(jì)工作的主要優(yōu)化方向.
1.為了方便減少聯(lián)合查詢、高效利用索引、分表3個(gè)后續(xù)優(yōu)化步驟,設(shè)計(jì)方向是需要將數(shù)據(jù)盡量集中在一張表中.
2.為了能高效利用查詢緩存,高效利用索引,要求設(shè)計(jì)方向是將經(jīng)常變化的數(shù)據(jù),和不經(jīng)常變化的數(shù)據(jù)分開(kāi)存儲(chǔ).
圖3.7為根據(jù)上述優(yōu)化原則對(duì)數(shù)據(jù)庫(kù)進(jìn)行優(yōu)化以后的數(shù)據(jù)庫(kù)ER圖.
圖3.7優(yōu)化后的數(shù)據(jù)庫(kù)ER圖
本文根據(jù)開(kāi)放平臺(tái)的特性提出一種實(shí)現(xiàn)開(kāi)放平臺(tái)之間信息與功能互聯(lián)互通的方法.解決了在實(shí)現(xiàn)互通環(huán)節(jié)的API模塊統(tǒng)一、用戶身份唯一性確認(rèn)、用戶關(guān)系圈維護(hù)等問(wèn)題.并為統(tǒng)一用戶系統(tǒng)設(shè)計(jì)了數(shù)據(jù)庫(kù).雖然本系統(tǒng)僅實(shí)現(xiàn)了用戶信息互通,但是按照本文提出的方法,可以實(shí)現(xiàn)開(kāi)放平臺(tái)之間所有功能的相互協(xié)作.
參考文獻(xiàn):
〔1〕艾文倩.微博平臺(tái)的信息碎片化研究.陜西師范大學(xué)碩士論文,2012.1-4.
〔2〕Mulligan,C. Open API standardisation for the NGN platform 2008,4-7.
〔3〕岑文初.Dpen API分析與實(shí)踐程序員.2009-
01-01,5-11.
中圖分類號(hào):TP311
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1673-260X(2015)09-0019-03
赤峰學(xué)院學(xué)報(bào)·自然科學(xué)版2015年17期