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