亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

OauthAPI的使用、調(diào)用方法、設(shè)備及系統(tǒng)的制作方法

文檔序號(hào):7888006閱讀:234來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):Oauth API的使用、調(diào)用方法、設(shè)備及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及授權(quán)訪(fǎng)問(wèn)技術(shù),尤其涉及一種Oauth API的使用、調(diào)用方法、設(shè)備及系統(tǒng),屬于通信技術(shù)領(lǐng)域。
背景技術(shù)
一種開(kāi)放授權(quán)協(xié)議(An open protocol to allow secure API authorization ina simple and standard method from desktop and web applications,Oauth)作為目前業(yè)界最為流行的第三方API鑒權(quán)授權(quán)訪(fǎng)問(wèn)協(xié)議已在互聯(lián)網(wǎng)上廣泛使用,該標(biāo)準(zhǔn)能夠讓用戶(hù)在不暴露用戶(hù)密鑰的情況下將用戶(hù)在某個(gè)服務(wù)提供商保存的隱私信息暴露給第三方應(yīng)用,例如谷歌、新浪、騰訊等均基于Oauth標(biāo)準(zhǔn)發(fā)布了豐富的API。通過(guò)Oauth協(xié)議建立了不同服務(wù)的信任機(jī)制,極大的促進(jìn)了互聯(lián)網(wǎng)的開(kāi)放。
雖然目前服務(wù)提供商根據(jù)Oauth協(xié)議提供API已經(jīng)可以達(dá)到了訪(fǎng)問(wèn)資源的保護(hù)的目的,但對(duì)于使用開(kāi)放授權(quán)應(yīng)用編程接口(Oauth Application Programming Interface,Oauth API)的開(kāi)發(fā)者來(lái)講,只能通過(guò)編寫(xiě)代碼的方式使用Oauth API。例如通過(guò)引用OauthAPI提供商(Provider)提供的軟件開(kāi)發(fā)工具包(Software Development Kit, SDK),通過(guò)編寫(xiě)代碼調(diào)用SDK中的認(rèn)證接口和業(yè)務(wù)接口,緊耦合Oauth授權(quán)邏輯在應(yīng)用代碼,以此來(lái)完成集成Oauth API的工作。開(kāi)發(fā)者以編寫(xiě)代碼方式使用Oauth API,這種使用Oauth API的方法復(fù)雜且低效,從而暴露出了如何高效使用Oauth API的問(wèn)題。發(fā)明內(nèi)容
針對(duì)現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明提供一種Oauth API的使用、調(diào)用方法、設(shè)備及系統(tǒng),以實(shí)現(xiàn)對(duì)Oauth API的高效使用。
根據(jù)本發(fā)明的一方面,提供一種使用Oauth API的方法,包括:
接收注冊(cè)O(shè)auth API的注冊(cè)信息;
根據(jù)所述注冊(cè)信息生成Oauth API調(diào)用關(guān)聯(lián)接口 ;
綁定所述Oauth API調(diào)用關(guān)聯(lián)接口與注冊(cè)的Oauth API,生成綁定信息;
接收增加Oauth API消息,響應(yīng)所述增加Oauth API消息,生成與所述注冊(cè)的Oauth API對(duì)應(yīng)的客戶(hù)端請(qǐng)求Oauth API接口、0auth API返回信息處理接口和客戶(hù)端客戶(hù)序列號(hào)管理接口;
接收發(fā)布應(yīng)用消息,響應(yīng)所述發(fā)布應(yīng)用消息,生成包括所述客戶(hù)端請(qǐng)求Oauth API接口、所述Oauth API返回信息處理接口和所述客戶(hù)端客戶(hù)序列號(hào)管理接口的部署包;
將所述綁定信息和所述部署包發(fā)送至所述應(yīng)用運(yùn)行引擎,以使所述應(yīng)用運(yùn)行引擎根據(jù)所述綁定信息和所述部署包完成Oauth API調(diào)度。
根據(jù)本發(fā)明的另一方面,還提供一種應(yīng)用開(kāi)發(fā)平臺(tái),包括:
Oauth API注冊(cè)模塊,用于接收注冊(cè)O(shè)auth API的注冊(cè)信息;
調(diào)用關(guān)聯(lián)接口生成模塊,用 于根據(jù)所述注冊(cè)信息生成Oauth API調(diào)用關(guān)聯(lián)接口 ;
綁定模塊,用于綁定所述Oauth API調(diào)用關(guān)聯(lián)接口與注冊(cè)的Oauth API,生成綁定信息;
使用接口生成模塊,用于接收增加Oauth API消息,響應(yīng)所述增加Oauth API消息,生成與所述注冊(cè)的Oauth API對(duì)應(yīng)的客戶(hù)端請(qǐng)求Oauth API接口、Oauth API返回信息處理接口和客戶(hù)端客戶(hù)序列號(hào)管理接口;
部署模塊,用于接收發(fā)布應(yīng)用消息,響應(yīng)所述發(fā)布應(yīng)用消息,生成包括所述客戶(hù)端請(qǐng)求Oauth API接口、所述Oauth API返回信息處理接口和所述客戶(hù)端客戶(hù)序列號(hào)管理接口的部署包;
發(fā)送模塊,用于將所述綁定信息和所述部署包發(fā)送至所述應(yīng)用運(yùn)行引擎,以使所述應(yīng)用運(yùn)行引擎根據(jù)所述綁定信息和所述部署包完成Oauth API調(diào)度。
根據(jù)本發(fā)明的又一方面,還提供一種Oauth API調(diào)用方法,包括:
攔截客戶(hù)端請(qǐng)求消息,為所述客戶(hù)端分配客戶(hù)序列號(hào),并存儲(chǔ)客戶(hù)序列號(hào);
接收客戶(hù)端通過(guò)調(diào)用客戶(hù)端請(qǐng)求Oauth API接口發(fā)送的攜帶有所述客戶(hù)序列號(hào)的Oauth API調(diào)用請(qǐng)求;
根據(jù)所述Oauth API調(diào)用請(qǐng)求所攜帶的客戶(hù)序列號(hào)對(duì)所述Oauth API調(diào)用進(jìn)行鑒權(quán),并在鑒權(quán)通過(guò)后,獲取與請(qǐng)求調(diào)用的Oauth API對(duì)應(yīng)的接口綁定信息;
根據(jù)所述接口綁定信息進(jìn)行授權(quán)認(rèn)證,獲取訪(fǎng)問(wèn)令牌;
將所述訪(fǎng)問(wèn)令牌注入所述Oauth API調(diào)用請(qǐng)求,并將注入所述訪(fǎng)問(wèn)令牌的OauthAPI調(diào)用請(qǐng)求發(fā)送至Oauth提供商,以使所述Oauth API響應(yīng)注入所述訪(fǎng)問(wèn)令牌的OauthAPI調(diào)用請(qǐng)求并返回Oauth API返回信息;
將所述Oauth API返回信息返回至客戶(hù)端,以完成Oauth API調(diào)用。
根據(jù)本發(fā)明的再一方面,還提供一種應(yīng)用運(yùn)行引擎,包括:
客戶(hù)端客戶(hù)序列號(hào)管理模塊,用于攔截客戶(hù)端請(qǐng)求消息,為所述客戶(hù)端分配客戶(hù)序列號(hào),并存儲(chǔ)客戶(hù)序列號(hào);
Oauth API調(diào)用請(qǐng)求接收模塊,用于接收客戶(hù)端通過(guò)調(diào)用客戶(hù)端請(qǐng)求Oauth API接口發(fā)送的攜帶有所述客戶(hù)序列號(hào)的Oauth API調(diào)用請(qǐng)求;
鑒權(quán)模塊,用于根據(jù)所述Oauth API調(diào)用請(qǐng)求所攜帶的客戶(hù)序列號(hào)對(duì)所述OauthAPI調(diào)用進(jìn)行鑒權(quán),并在鑒權(quán)通過(guò)后,獲取與請(qǐng)求調(diào)用的Oauth API對(duì)應(yīng)的接口綁定信息;
授權(quán)認(rèn)證模塊,用于根據(jù)所述接口綁定信息進(jìn)行授權(quán)認(rèn)證,獲取訪(fǎng)問(wèn)令牌;
Oauth API調(diào)用模塊,將所述訪(fǎng)問(wèn)令牌注入所述Oauth API調(diào)用請(qǐng)求,并將注入所述訪(fǎng)問(wèn)令牌的Oauth API調(diào)用請(qǐng)求發(fā)送至Oauth提供商,以使所述Oauth API響應(yīng)注入所述訪(fǎng)問(wèn)令牌的Oauth API調(diào)用請(qǐng)求并返回Oauth API返回信息;
Oauth API返回信息處理模塊,將所述Oauth API返回信息返回至客戶(hù)端,以完成Oauth API 調(diào)用。
根據(jù)本發(fā)明的再一方面,還提供一種使用Oauth API的系統(tǒng),包括本發(fā)明實(shí)施例的應(yīng)用開(kāi)發(fā)平臺(tái),和本發(fā)明實(shí)施例的應(yīng)用運(yùn)行引擎。
根據(jù)本發(fā)明提供的Oauth API的使用、調(diào)用方法、設(shè)備及系統(tǒng),通過(guò)對(duì)Oauth認(rèn)證邏輯進(jìn)行抽象,形成一套可通用的認(rèn)證接口,使開(kāi)發(fā)者在開(kāi)發(fā)應(yīng)用時(shí),由應(yīng)用開(kāi)發(fā)平臺(tái)自動(dòng)生成可執(zhí)行的接口并注入到應(yīng)用運(yùn) 行引擎,以使應(yīng)用運(yùn)行引擎判斷客戶(hù)端需要Oauth API調(diào)用時(shí),可通過(guò)自動(dòng)執(zhí)行這些可執(zhí)行接口來(lái)完成Oauth API調(diào)用。可以看出,在上述實(shí)施例的使用Oauth API的方法中,僅需開(kāi)發(fā)者將Oauth API注冊(cè)引用應(yīng)用開(kāi)發(fā)平臺(tái),即向應(yīng)用開(kāi)發(fā)平臺(tái)提供Oauth API注冊(cè)信息,其余可執(zhí)行接口的生成及相關(guān)處理均由應(yīng)用開(kāi)發(fā)平臺(tái)自動(dòng)完成,極大地簡(jiǎn)化了應(yīng)用開(kāi)發(fā)程序,提高了開(kāi)發(fā)效率。


為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為用于應(yīng)用本發(fā)明實(shí)施例的使用Oauth API的方法的系統(tǒng)架構(gòu)圖。
圖2為本發(fā)明實(shí)施例的使用Oauth API的方法的流程示意圖。
圖3為本發(fā)明另一實(shí)施例的使用Oauth API的方法的流程示意圖。
圖4為本發(fā)明實(shí)施例的應(yīng)用開(kāi)發(fā)平臺(tái)的結(jié)構(gòu)示意圖。
圖5為本發(fā)明實(shí)施例的Oauth API調(diào)用方法的流程示意圖。
圖6為本發(fā)明另一實(shí)施例的Oauth API調(diào)用方法的流程示意圖。
圖7為本發(fā)明又一實(shí)施例的Oauth API調(diào)用方法的流程示意圖。
圖8為本發(fā)明實(shí)施例的應(yīng)用運(yùn)行引擎的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
圖1為用于應(yīng)用本發(fā)明實(shí)施例的使用Oauth API的方法的系統(tǒng)架構(gòu)圖。如圖1所示,包括Oauth API提供商、客戶(hù)端、應(yīng)用運(yùn)行引擎以及應(yīng)用開(kāi)發(fā)平臺(tái)。其中,應(yīng)用開(kāi)發(fā)平臺(tái)用于自動(dòng)生成與Oauth API相關(guān)的可執(zhí)行的接口,并注入到應(yīng)用運(yùn)行引擎中,以使應(yīng)用運(yùn)行引擎利用這些可執(zhí)行接口完成客戶(hù)端發(fā)起的Oauth API調(diào)用請(qǐng)求。下面從應(yīng)用開(kāi)發(fā)平臺(tái)的角度對(duì)本發(fā)明實(shí)施例的使用Oauth API的方法進(jìn)行詳細(xì)說(shuō)明。
圖2為本發(fā)明實(shí)施例的使用Oauth API的方法的流程示意圖。如圖2所示,該使用Oauth API的方法包括以下步驟:
步驟S201,接收注冊(cè)O(shè)auth API的注冊(cè)信息;
步驟S202,根據(jù)所述注冊(cè)信息生成Oauth API調(diào)用關(guān)聯(lián)接口 ;
步驟S203,綁定所述Oauth API調(diào)用關(guān)聯(lián)接口與注冊(cè)的Oauth API,生成綁定信息;
步驟S204,接收增加Oauth API消息,響應(yīng)所述增加Oauth API消息,生成與所述注冊(cè)的Oauth API對(duì)應(yīng)的客戶(hù)端請(qǐng)求Oauth API接口、Oauth API返回信息處理接口和客戶(hù)端客戶(hù)序列號(hào)管理接口;
步驟S205,接收 發(fā)布應(yīng)用消息,響應(yīng)所述發(fā)布應(yīng)用消息,生成包括所述客戶(hù)端請(qǐng)求Oauth API接口、所述Oauth API返回信息處理接口和所述客戶(hù)端客戶(hù)序列號(hào)管理接口的部署包;
步驟S206,將所述綁定信息和所述部署包發(fā)送至所述應(yīng)用運(yùn)行引擎,以使所述應(yīng)用運(yùn)行引擎根據(jù)所述綁定信息和所述部署包完成Oauth API調(diào)度。
具體地,在上述實(shí)施例的使用Oauth API的方法中,開(kāi)發(fā)者在應(yīng)用開(kāi)發(fā)平臺(tái)中注冊(cè)O(shè)auth API,提供Oauth API的注冊(cè)信息,其中,該Oauth API為Oauth API提供商提供的可用Oauth API。應(yīng)用開(kāi)發(fā)平臺(tái)根據(jù)所注冊(cè)O(shè)auth API的注冊(cè)信息自動(dòng)生成用于實(shí)現(xiàn)支持Oauth API調(diào)用的Oauth API調(diào)用關(guān)聯(lián)接口。此外,還可根據(jù)注冊(cè)的Oauth API觸發(fā)在應(yīng)用開(kāi)發(fā)平臺(tái)中增加Oauth AP10
根據(jù)上述實(shí)施例的使用Oauth API的方法,通過(guò)對(duì)Oauth認(rèn)證邏輯進(jìn)行抽象,形成一套可通用的認(rèn)證接口,使開(kāi)發(fā)者在開(kāi)發(fā)應(yīng)用時(shí),由應(yīng)用開(kāi)發(fā)平臺(tái)自動(dòng)生成可執(zhí)行的接口并注入到應(yīng)用運(yùn)行引擎,以使應(yīng)用運(yùn)行引擎判斷客戶(hù)端需要Oauth API調(diào)用時(shí),可通過(guò)自動(dòng)執(zhí)行這些可執(zhí)行接口來(lái)完成Oauth API調(diào)用??梢钥闯觯谏鲜鰧?shí)施例的使用Oauth API的方法中,僅需開(kāi)發(fā)者將Oauth API注冊(cè)引用應(yīng)用開(kāi)發(fā)平臺(tái),即向應(yīng)用開(kāi)發(fā)平臺(tái)提供OauthAPI注冊(cè)信息,其余可執(zhí)行接口的生成及相關(guān)處理均由應(yīng)用開(kāi)發(fā)平臺(tái)自動(dòng)完成,極大地簡(jiǎn)化了應(yīng)用開(kāi)發(fā)程序,提高了開(kāi)發(fā)效率。
圖3為本發(fā)明另一實(shí)施例的使用Oauth API的方法的流程示意圖。如圖3所示,包括以下流程:
步驟S301,開(kāi)發(fā)者在應(yīng)用開(kāi)發(fā)平臺(tái)中注冊(cè)O(shè)auth域;
其中,需注冊(cè)的信息包括以下在訪(fǎng)問(wèn)Oauth API時(shí)需要的域信息:
名稱(chēng)(Name),其用于標(biāo)識(shí)注冊(cè)的Oauth域的名稱(chēng),例如為sina ;
通信使用協(xié)議(Use SSL),通信使用協(xié)議包括超文本傳輸協(xié)議(HyperTextTransfer Protocol, HTTP)和安全超文本傳輸協(xié)議(Secure Hyper Text TransferProtocol, HTTPS)兩種,注冊(cè)時(shí)必須選擇一種協(xié)議,例如選擇HTTP ;
請(qǐng)求令牌(RequestToken)統(tǒng)一資源定位符(Uniform/Universal ResourceLocatonURL),其用于標(biāo)識(shí)Oauth API提供商提供給客戶(hù)用于獲取請(qǐng)求令牌的服務(wù)地址,例如為 “ap1.t.sina.com.cn/oauth/request_token,,;
授權(quán)認(rèn)證URL,其用于標(biāo)識(shí)Oauth API提供商提供的用于用戶(hù)授權(quán)的官方認(rèn)證地址,例如為 “ap1.t.sina.com.cn/oauth/authorize^ ;
訪(fǎng)問(wèn)令牌URL,其用于標(biāo)識(shí)Oauth API提供商提供給客戶(hù)用于獲取訪(fǎng)問(wèn)令牌和訪(fǎng)問(wèn)簽名的地址,例如為 “ap1.t.sina.com.cn/oauth/access_token” ;
應(yīng)用序列號(hào)(consumer Key),其用于標(biāo)識(shí)訪(fǎng)問(wèn)服務(wù)需要的應(yīng)用序列號(hào),由OauthAPI提供商提供,例如為“4018652807” ;
應(yīng)用簽名(consumer Secret),其用于標(biāo)識(shí)訪(fǎng)問(wèn)服務(wù)需要的應(yīng)用簽名,由OauthAPI 提供商提供,例如為 “5ee8fc57a5c8a9589a3933b92576a0b6”。
步驟S302,應(yīng)用開(kāi)發(fā)平臺(tái)接收到注冊(cè)O(shè)auth域的消息后,記錄Oauth域的注冊(cè)信息,并通知應(yīng)用運(yùn)行引擎保存Oauth域的注冊(cè)信息;
步驟S303,開(kāi)發(fā)者在應(yīng)用開(kāi)發(fā)平臺(tái)中注冊(cè)O(shè)auth API ;
其中,開(kāi)發(fā)者需提供 的注冊(cè)信息包括調(diào)用Oauth API所需要的API信息,其具體包括如下信息:
名稱(chēng)(Name),用于標(biāo)識(shí)API名稱(chēng),例如為“SinaUpdate” ;
HTTP方法(method),用于標(biāo)識(shí)調(diào)用服務(wù)的方法,調(diào)用服務(wù)的方法包括POST和GET兩種方法,注冊(cè)時(shí)只需選擇一種,例如為“POST” ;URL,用于標(biāo)識(shí)API訪(fǎng)問(wèn)的URL,例如為“http://ap1.t.sina.com.cn/statuses/update, json,,;
輸入(Input)格式,用于標(biāo)識(shí)輸入數(shù)據(jù)格式,例如為urlencoded ;
輸出(Output)格式,用于標(biāo)識(shí)API返回?cái)?shù)據(jù)格式,API返回?cái)?shù)據(jù)格式包括json和xml兩種,選擇其一,例如為“ j son ” ;
是否需要認(rèn)證標(biāo)識(shí)(Need Oauth),選擇YES或NO,例如為“YES” ;
域(Domain),用于關(guān)聯(lián)一個(gè)已注冊(cè)的Oauth域,例如為“sina”。
步驟S304,應(yīng)用開(kāi)發(fā)平臺(tái)收到注冊(cè)O(shè)auth API消息后,生成服務(wù)端OauthAPI調(diào)用接口 ;
具體地,應(yīng)用開(kāi)發(fā)平臺(tái)根據(jù)開(kāi)發(fā)者注冊(cè)的Oauth API的注冊(cè)信息,生成在應(yīng)用運(yùn)行引擎調(diào)用Oauth API的接口,該服務(wù)端Oauth API調(diào)用接口是在認(rèn)證成功后注入了請(qǐng)求簽名信息和訪(fǎng)問(wèn)令牌后向Oauth API發(fā)送請(qǐng)求處理的接口。生成方式例如為:以注冊(cè)O(shè)authAPI 的名稱(chēng)為服務(wù)端 Oauth API 調(diào)用接口的名稱(chēng),以 “url”,” httpmethod”, “paramStr”,“signature”,“accessToken”為接口參數(shù)名稱(chēng)生成接口。生成的服務(wù)端Oauth API調(diào)用接口例如為:
function InvokeSinaUpdate(url,method, paramStr,signature,accessToken){ WebRM1.sendRealRESTRequestC'httpV/ap1.t.sina.com.cn/statuses/update.json”,”P(pán)OST”,”id=test01”,“setlnfo”);}
步驟S305,應(yīng)用開(kāi)發(fā)平臺(tái)生成Oauth授權(quán)認(rèn)證接口 ;
應(yīng)用開(kāi)發(fā)平臺(tái)收到生成Oauth授權(quán)認(rèn)證接口消息時(shí),自動(dòng)生成Oauth授權(quán)認(rèn)證所需要的接口。生成接口有兩種方式,一種生成可執(zhí)行的功能接口,一種生成與SDK對(duì)接接口,支持綁定動(dòng)態(tài)生成的授權(quán)認(rèn)證接 口和部署在運(yùn)行引擎中的OauthSDK的接口。
所生成的Oauth授權(quán)認(rèn)證接口例如包括:
簽名接口,生成方式例如為:以注冊(cè)的OauthAPI名稱(chēng)和表示“簽名”的關(guān)鍵詞為接口名稱(chēng),并以“ urI ”,“ key ”,“ paras ”為參數(shù)名稱(chēng)生成簽名接口。所生成的簽名接口例如為:
function SinaUpdateSign (baseURI, KEY)
{return binb2str(core_shal(str2binb(baseURI), baseUR1.length*KEY)) ;}
獲取請(qǐng)求令牌接口,生成方式例如為:以注冊(cè)的Oauth API名稱(chēng)和表示“RequestToken” 的關(guān)鍵詞為接口名稱(chēng),并以 “consumerkey,,,“consumersecret”,“ requeStTokenURL “ s i gnature ”為參數(shù)名稱(chēng)生成接口。所生成的獲取請(qǐng)求令牌接口例如為:
Function
GetSinaUpdateRequestToken (consumerkey, consumer secret, requestTokenURL,sign)
{...}
請(qǐng)求用戶(hù)授權(quán)接口,生成方式例如為:以注冊(cè)的Oauth API名稱(chēng)和表示“用戶(hù)授權(quán)”的關(guān)鍵詞為接口名稱(chēng),并以“requestToken”, “authoticationURL”為參數(shù)名稱(chēng)生成接口。所生成的請(qǐng)求用戶(hù)授權(quán)接口例如為:
function SinaUpdateUserAuthirity (requestToken, authoticationURL)
{..}
獲取Oauth訪(fǎng)問(wèn)令牌接口,生成方式例如為:以注冊(cè)的Oauth API名稱(chēng)和表示“獲取訪(fǎng)問(wèn)令牌”的關(guān)鍵詞為接口名稱(chēng),并以“requestToken”, “AccessTokenURL”, “Verifier”為參數(shù)名稱(chēng)生成接口。所生成的獲取Oauth訪(fǎng)問(wèn)令牌接口例如為:
function
SinaUpdateGetAcceeToken (requestToken, AccessTokenURL, Verifier)
{...}
步驟S306,應(yīng)用開(kāi)發(fā)平臺(tái)通過(guò)API名稱(chēng)綁定授權(quán)認(rèn)證接口并定義調(diào)用接口流程。
具體地,綁定的接口可以是可執(zhí)行的功能接口也可以是與SDK對(duì)接接口。當(dāng)綁定SDK接口時(shí),對(duì)調(diào)用Oauth API的所需的授權(quán)認(rèn)證接口和OauthSDK中授權(quán)認(rèn)證接口進(jìn)行綁定映射。定義調(diào)用接口流程時(shí),例如根據(jù)應(yīng)用開(kāi)發(fā)平臺(tái)配置信息判斷是綁定“應(yīng)用自動(dòng)觸發(fā)Oauth認(rèn)證授權(quán)”或“用戶(hù)觸發(fā)Oauth認(rèn)證授權(quán)”流程,按照配置信息綁定不同的授權(quán)流程。
綁定信息包括:綁定的OauthAPI名稱(chēng)、服務(wù)端調(diào)用OauthAPI的接口名稱(chēng)及接口參數(shù)名稱(chēng)、簽名對(duì)應(yīng)的接口名稱(chēng)及其參數(shù)名稱(chēng)、獲取RequestToken對(duì)應(yīng)的接口名稱(chēng)及其參數(shù)名稱(chēng)、觸發(fā)用戶(hù)授權(quán)對(duì)應(yīng)的接口名稱(chēng)及其參數(shù)名稱(chēng)、獲取AccessToken對(duì)應(yīng)的接口及其參數(shù)名稱(chēng)及綁定的接口執(zhí)行順序。
綁定接口的格式例如為:
<API><name>ApiName</name><interfaces> <invokeInfterF ace>
<![CDATA[InvokeAPIName {...} ]]//綁定為 OauthSDK 接口時(shí)對(duì)應(yīng)為OauthSDK中的具體接口 <invokeInfterF ace /><OauthProccess><type> <![auto ]]</type>〈Signature〉 <![CDATA[ApiNameSign {...} ]]// 綁定為 OauthSDK 接口時(shí)對(duì)應(yīng)為OauthSDK中的具體接口〈/Signature〉〈RequestToken〉 <![CDATA[GetApiNameRequestToken } ]] //綁定為 OauthSDK接口時(shí)對(duì)應(yīng)為OauthSDK中的具體接口</ RequestToken > 〈U serAuthirity > <![CDATA[ApiNameUserAuthority ]] //綁定為 OauthSDK接口時(shí)對(duì)應(yīng)為OauthSDK中的具體接口</UserAuthirity> 〈AccessToken〉 <![CDATA[GetApiNameAccessToken ]] //綁定為 OauthSDK接口時(shí)對(duì)應(yīng)為OauthSDK中的具體接口</ AccessToken ></OauthProccess> 〈/interfaces〉
</API>
步驟S307,應(yīng)用開(kāi)發(fā)平臺(tái)通知應(yīng)用運(yùn)行引擎注入注冊(cè)的Oauth API的注冊(cè)信息及綁定信息;
步驟S308,開(kāi)發(fā)者使用Oauth API開(kāi)發(fā)業(yè)務(wù),觸發(fā)應(yīng)用開(kāi)發(fā)平臺(tái)增加Oauth API ;
步驟S309,應(yīng)用開(kāi)發(fā)平臺(tái)接收到增加Oauth API消息后,生成觸發(fā)Oauth認(rèn)證流程界面。
具體地,應(yīng)用開(kāi)發(fā)平臺(tái)若根據(jù)配置信息判斷Oauth授權(quán)認(rèn)證流程為“用戶(hù)觸發(fā)授權(quán)認(rèn)證流程”,則生成的界面信息包括:1、用戶(hù)觸發(fā)認(rèn)證授權(quán)入口(按鈕/鏈接)2、用戶(hù)觸發(fā)授權(quán)認(rèn)證流程后向服務(wù)端請(qǐng)求Oauth認(rèn)證授權(quán)的接口,“Oauth API請(qǐng)求授權(quán)接口”,其中“Oauth API請(qǐng)求授權(quán)接口”包括參數(shù)“Oauth API名稱(chēng)”和“客戶(hù)序列號(hào)(ClientKey) ”。
步驟S310,應(yīng)用開(kāi)發(fā)平臺(tái)生成“客戶(hù)端Oauth API請(qǐng)求接口”;
具體地,所生成的客戶(hù)端Oauth API請(qǐng)求接口用于在應(yīng)用運(yùn)行時(shí),客戶(hù)端通過(guò)調(diào)用該客戶(hù)端Oauth API請(qǐng)求接口來(lái)請(qǐng)求應(yīng)用運(yùn)行引擎調(diào)用Oauth API??蛻?hù)端Oauth API請(qǐng)求接口的生成方式例如為:以注冊(cè)的Oauth API名稱(chēng)和表示“調(diào)用”的關(guān)鍵詞為接口名稱(chēng),并以“apiName,,,“clientKey,,,“paras,,,“injectedlnterfaceName,,為參數(shù)名稱(chēng)生成接口。所生成的客戶(hù)端OauthAPI請(qǐng)求接口例如為:
function invokeSinaUpdate (apiName, clientKey, paras, callback)
{...}
步驟S311,應(yīng)用開(kāi)發(fā)平臺(tái)生成“Oauth API返回信息處理接口”;
具體地,所生成的Oauth API返回信息處理接口用于處理應(yīng)用運(yùn)行引擎調(diào)用OauthAPI成功后,OauthAPI返回的信息。OauthAPI返回信息處理接口的生成方式例如為:以注冊(cè)的OauthAPI名稱(chēng)和表示“注入”的關(guān)鍵詞為接口名稱(chēng),并以“result”為參數(shù)名稱(chēng)生成接口定義信息。所生成的OauthAPI返回信息處理接口例如為:
function sinaUpdatelnjected (result)..}
步驟S312, 應(yīng)用開(kāi)發(fā)平臺(tái)生成“客戶(hù)端ClientKey管理接口” ;
具體地,所生成的客戶(hù)端ClientKey管理接口用于保存應(yīng)用運(yùn)行引擎分配給客戶(hù)端的合法訪(fǎng)問(wèn)標(biāo)識(shí)的ClientKey??蛻?hù)端ClientKey管理接口的生成方式例如為:以表示“客戶(hù)端key”關(guān)鍵詞為接口名稱(chēng),以表示“保存客戶(hù)端key”的關(guān)鍵詞為名生成一個(gè)功能方法,且其參數(shù)名稱(chēng)為“url”,再以表示“getClientKeyKey”的關(guān)鍵詞為名生成一個(gè)無(wú)參數(shù)的功能方法,生成接口。所生成的客戶(hù)端ClientKey管理接口例如為:
function ClientKey {saveClientKey(url)getClientKeyKey() {...}; }
步驟S313,開(kāi)發(fā)者發(fā)布應(yīng)用;
步驟S314,應(yīng)用開(kāi)發(fā)平臺(tái)生成部署包并部署。
具體地,應(yīng)用開(kāi)發(fā)平臺(tái)接收到開(kāi)發(fā)者發(fā)送的發(fā)布應(yīng)用的消息后根據(jù)應(yīng)用信息生成部署包并通知應(yīng)用運(yùn)行引擎進(jìn)行部署。
圖4為本發(fā)明實(shí)施例的應(yīng)用開(kāi)發(fā)平臺(tái)的結(jié)構(gòu)示意圖。如圖4所示,該應(yīng)用開(kāi)發(fā)平臺(tái)包括:
Oauth API注冊(cè)模塊41,用于接收注冊(cè)O(shè)auth API的注冊(cè)信息;
調(diào)用關(guān)聯(lián)接口生成模塊42,用于根據(jù)所述注冊(cè)信息生成Oauth API調(diào)用關(guān)聯(lián)接Π ;
綁定模塊43,用于綁定所述Oauth API調(diào)用關(guān)聯(lián)接口與注冊(cè)的Oauth API,生成綁定信息;
使用接口生成模塊44,用于接收增加Oauth API消息,響應(yīng)所述增加Oauth API消息,生成與所述注冊(cè)的Oauth API對(duì)應(yīng)的客戶(hù)端請(qǐng)求Oauth API接口、Oauth API返回信息處理接口和客戶(hù)端客戶(hù)序列號(hào)管理接口;
部署模塊45,用于接收發(fā)布應(yīng)用消息,響應(yīng)所述發(fā)布應(yīng)用消息,生成包括所述客戶(hù)端請(qǐng)求Oauth API接口、所述Oauth API返回信息處理接口和所述客戶(hù)端客戶(hù)序列號(hào)管理接口的部署包;
發(fā)送模塊46,用于將所述綁定信息和所述部署包發(fā)送至所述應(yīng)用運(yùn)行引擎,以使所述應(yīng)用運(yùn)行引擎根據(jù)所述綁定信息和所述部署包完成Oauth API調(diào)度。
其中,使用接口生成模塊44例如包括客戶(hù)端請(qǐng)求Oauth API接口生成單元、OauthAPI返回信息處理接口生成單元和客戶(hù)端客戶(hù)序列號(hào)管理接口生成單元。
上述實(shí)施例的應(yīng)用開(kāi)發(fā)平臺(tái)使用Oauth API進(jìn)行應(yīng)用開(kāi)發(fā)的流程與前述實(shí)施例的使用Oauth API的方法相同,故此處不再贅述。
根據(jù)上述實(shí)施例的應(yīng)用開(kāi)發(fā)平臺(tái),通過(guò)對(duì)Oauth認(rèn)證邏輯進(jìn)行抽象,形成一套可通用的認(rèn)證接口,使開(kāi)發(fā)者在開(kāi)發(fā)應(yīng)用時(shí),由應(yīng)用開(kāi)發(fā)平臺(tái)自動(dòng)生成可執(zhí)行的接口并注入到應(yīng)用運(yùn)行引擎,以使應(yīng)用運(yùn)行引擎判斷客戶(hù)端需要Oauth API調(diào)用時(shí),可通過(guò)自動(dòng)執(zhí)行這些可執(zhí)行接口來(lái)完成Oauth API調(diào)用??梢钥闯?,在上述實(shí)施例的使用Oauth API的方法中,僅需開(kāi)發(fā)者將Oauth API注冊(cè)引用應(yīng)用開(kāi)發(fā)平臺(tái),即向應(yīng)用開(kāi)發(fā)平臺(tái)提供Oauth API注冊(cè)信息,其余可執(zhí)行接口的生成及相關(guān)處理均由應(yīng)用開(kāi)發(fā)平臺(tái)自動(dòng)完成,極大地簡(jiǎn)化了應(yīng)用開(kāi)發(fā)程序,提高了開(kāi)發(fā)效率。
進(jìn)一步地,在上述實(shí)施例的應(yīng)用開(kāi)發(fā)平臺(tái)中,所述注冊(cè)令牌包括:所述注冊(cè)的Oauth API的名稱(chēng)、請(qǐng)求方法、統(tǒng)一資源定位符、輸入格式、輸出格式、是否需要開(kāi)放授權(quán)協(xié)議Oauth認(rèn)證標(biāo)識(shí)以及所述注冊(cè)的Oauth API對(duì)應(yīng)的Oauth域的域名。
進(jìn)一步地,在上述實(shí)施例的應(yīng)用開(kāi)發(fā)平臺(tái)中,還包括:
Oauth域注冊(cè)模塊,用于接收注冊(cè)O(shè)auth域的注冊(cè)信息,所述注冊(cè)的Oauth域與所述注冊(cè)的Oauth API相對(duì)應(yīng)。
進(jìn)一步地,在上述實(shí)施例的應(yīng)用開(kāi)發(fā)平臺(tái)中,調(diào)用關(guān)聯(lián)接口生成模塊包括:
服務(wù)端Oauth API調(diào)用關(guān)聯(lián)接口生成單元,用于生成服務(wù)端Oauth API調(diào)用接口 ;
Oauth授權(quán)認(rèn)證接口 生成單元,用于生成授權(quán)認(rèn)證接口。
進(jìn)一步地,在上述實(shí)施例的應(yīng)用開(kāi)發(fā)平臺(tái)中,綁定信息包括所述注冊(cè)的Oauth API的名稱(chēng)、所述服務(wù)端Oauth API調(diào)用接口、所述授權(quán)認(rèn)證接口,以及接口執(zhí)行流程。
本發(fā)明實(shí)施例的Oauth API調(diào)用方法也可基于圖1所示的系統(tǒng)架構(gòu)來(lái)實(shí)現(xiàn),其中該Oauth API調(diào)用方法由圖1中所示的應(yīng)用運(yùn)行引擎來(lái)執(zhí)行,下面從應(yīng)用運(yùn)行引擎的角度對(duì)本發(fā)明實(shí)施例的Oauth API調(diào)用方法進(jìn)行說(shuō)明。
圖5為本發(fā)明實(shí)施例的Oauth API調(diào)用方法的流程示意圖。如圖5所示,該OauthAPI調(diào)用方法包括以下步驟:
步驟S501,攔截客戶(hù)端請(qǐng)求消息,為所述客戶(hù)端分配客戶(hù)序列號(hào),并存儲(chǔ)客戶(hù)序列號(hào);
步驟S502,接收客戶(hù)端通過(guò)調(diào)用客戶(hù)端請(qǐng)求Oauth API接口發(fā)送的攜帶有所述客戶(hù)序列號(hào)的Oauth API調(diào)用請(qǐng)求;
步驟S503,根據(jù)所述Oauth API調(diào)用請(qǐng)求所攜帶的客戶(hù)序列號(hào)對(duì)所述Oauth API調(diào)用進(jìn)行鑒權(quán),并在鑒權(quán)通過(guò)后,獲取與請(qǐng)求調(diào)用的Oauth API對(duì)應(yīng)的接口綁定信息;
步驟S504,根據(jù)所述接口綁定信息進(jìn)行授權(quán)認(rèn)證,獲取訪(fǎng)問(wèn)令牌;
步驟S505,將所述訪(fǎng)問(wèn)令牌注入所述Oauth API調(diào)用請(qǐng)求,并將注入所述訪(fǎng)問(wèn)令牌的Oauth API調(diào)用請(qǐng)求發(fā)送至Oauth提供商,以使所述Oauth API響應(yīng)注入所述訪(fǎng)問(wèn)令牌的Oauth API調(diào)用請(qǐng)求并返回Oauth API返回信息;
步驟S506,將所述Oauth API返回信息返回至客戶(hù)端,以完成Oauth API調(diào)用。
在上述實(shí)施例的Oauth API調(diào)用方法中,應(yīng)用運(yùn)行引擎響應(yīng)客戶(hù)端請(qǐng)求執(zhí)行OauthAPI調(diào)用過(guò)程中所需涉及的接口綁定信息及全部可執(zhí)行接口均由應(yīng)用開(kāi)發(fā)平臺(tái)預(yù)先生成,具體生成過(guò)程與前述實(shí)施例的使用Oauth API的方法相同,故此處不再贅述。
根據(jù)上述實(shí)施例的Oauth API調(diào)用方法,通過(guò)由應(yīng)用運(yùn)行引擎自動(dòng)使用應(yīng)用開(kāi)發(fā)平臺(tái)提供的可執(zhí)行接口來(lái)完成Oauth API調(diào)用,實(shí)現(xiàn)了 Oauth API的便捷調(diào)用。
進(jìn)一步地,在上述實(shí)施例的Oauth API調(diào)用方法中,授權(quán)認(rèn)證的觸發(fā)包括兩種情形,即應(yīng)用自動(dòng)觸發(fā)Oauth授權(quán)認(rèn)證和用戶(hù)觸發(fā)Oauth授權(quán)認(rèn)證。下面分別對(duì)這兩種情形進(jìn)行說(shuō)明
圖6為本發(fā)明另一實(shí)施例的Oauth API調(diào)用方法的流程示意圖。如圖6所示,由應(yīng)用自動(dòng)觸發(fā)Oauth授權(quán)認(rèn)證時(shí),Oauth API調(diào)用方法包括以下流程:
步驟S601,用戶(hù)通過(guò)客戶(hù)端工具訪(fǎng)問(wèn)部署在應(yīng)用運(yùn)行引擎的應(yīng)用,發(fā)起應(yīng)用請(qǐng)求;
步驟S602,攔截客戶(hù)端發(fā)送的應(yīng)用請(qǐng)求,記錄請(qǐng)求訪(fǎng)問(wèn)的第一 URL ;
步驟S603,為客戶(hù)端分配唯一標(biāo)識(shí)的客戶(hù)序列號(hào)(ClientKey),并記錄ClientKey ;
其中,ClientKey值生成規(guī)則為:根據(jù)客戶(hù)端IP、當(dāng)前SessionID、應(yīng)用名稱(chēng)、用戶(hù)ID、⑶ID以及當(dāng)前請(qǐng)求時(shí)間,通過(guò)HMAC-SHA1算法簽名生成
步驟S604,根據(jù)步驟S602記錄的URL和步驟S603生成的ClientKey重定向用戶(hù)到帶有ClientKey的第二 URL ;
其中,第二 URL格式示例如下:
http://hostname/appname ClientKey = ssdfd44541232322sdd
步驟S605,應(yīng)用在客 戶(hù)端運(yùn)行時(shí)調(diào)用“ Cl ientKey管理接口 ”獲取Cl ientKey值并保存;
步驟S606,客戶(hù)端請(qǐng)求應(yīng)用運(yùn)行引擎調(diào)用OauthAPI,請(qǐng)求參數(shù)包括在步驟S605記錄的ClientKey,調(diào)用的OauthAPI名稱(chēng)、調(diào)用OuathAPI需要的參數(shù)及客戶(hù)端處理返回結(jié)果的接口名稱(chēng)。
步驟S607,應(yīng)用運(yùn)行引擎獲取ClientKey并進(jìn)行認(rèn)證,以判斷是否是合法ClientKey,認(rèn)證方法例如如下:
1)檢查在應(yīng)用運(yùn)行引擎是否記錄了客戶(hù)端提供的ClientKey,不存在則非法。
2) ClientKey進(jìn)行反簽名獲取CientKey中對(duì)應(yīng)的每一項(xiàng)信息
3)根據(jù)客戶(hù)端請(qǐng)求獲取客戶(hù)端IP、當(dāng)前SessionID、請(qǐng)求應(yīng)用名稱(chēng)、用戶(hù)ID
4)根據(jù)2)所獲取信息和3)所獲取的信息進(jìn)行每項(xiàng)匹配,如果匹配則認(rèn)為合法,否則非法。
步驟S608,根據(jù)請(qǐng)求信息獲取并記錄請(qǐng)求Oauth的應(yīng)用URL、參數(shù)、OauthAPI名稱(chēng)、OauthAPI返回信息處理接口名稱(chēng);
步驟S609,根據(jù)請(qǐng)求的OauthAPI名稱(chēng),查詢(xún)與之對(duì)應(yīng)的接口綁定信息,該接口綁定信息即為應(yīng)用開(kāi)發(fā)平臺(tái)使用OauthAPI流程中生成的綁定信息;
步驟S610,根據(jù)步驟S609獲取的接口綁定信息,獲取并執(zhí)行Oauth授權(quán)認(rèn)證接口,獲取 AccessToken ;
具體地,獲取AccessToken具體包括:
I)根據(jù)所述接口綁定信息獲取授權(quán)認(rèn)證接口,并執(zhí)行所述授權(quán)認(rèn)證接口 ;
2)執(zhí)行觸發(fā)用戶(hù)授權(quán)接口重定向Oauth提供商授權(quán)頁(yè)面時(shí),設(shè)置Oauth提供商的CALLBACK為應(yīng)用運(yùn)行引擎接收認(rèn)證結(jié)果服務(wù)的URL ;
3)通過(guò)接收所述認(rèn)證結(jié)果服務(wù)獲取驗(yàn)證符,并獲取訪(fǎng)問(wèn)令牌;
4)根據(jù)所存儲(chǔ)的客戶(hù)序列號(hào)、所述Oauth API標(biāo)識(shí)和所述訪(fǎng)問(wèn)令牌,將所述客戶(hù)序列號(hào)和所述Oauth API標(biāo)識(shí)進(jìn)行組合以作為記錄所述訪(fǎng)問(wèn)令牌的標(biāo)識(shí),并記錄所述訪(fǎng)問(wèn)令牌。
步驟S611,根據(jù)在先記錄的ClientKey、OauthAPI名稱(chēng),以及獲取的AcceessToken J^ClientKey和OauthAPI重新進(jìn)行HMAC-SHA1算法簽名,生成的簽名值作為記錄AcceessToken的標(biāo)識(shí)記錄AccessToken。
步驟S612,根據(jù)在先記錄的參數(shù)、AccessToken,執(zhí)行“服務(wù)端OauthAPI調(diào)用接口”注入AccessToken,并發(fā)送請(qǐng)求給OauthAPI ;
步驟S613,根據(jù)獲取的OauthAPI返回信息、記錄的注入結(jié)果的接口名稱(chēng),執(zhí)行“生成客戶(hù)端腳本接口 ”生成動(dòng)態(tài)腳本;
生成動(dòng)態(tài)腳本示例如下:
{ response.setContentType("script"); out=interfaceCallBack+ “( ” +data “)“; response.println(out); }
步驟S614,通過(guò)推送生成的腳本到客戶(hù)端完成注入腳本到客戶(hù)端。
步驟S615,客戶(hù)端執(zhí)行注入的腳本并調(diào)用“OauthAPI返回信息處理接口”完成返回信息處理,例如顯示和計(jì)算結(jié)果信息。
圖7為本發(fā)明又一實(shí)施例的Oauth API調(diào)用方法的流程示意圖。如圖7所示,由用戶(hù)觸發(fā)Oauth授權(quán)認(rèn)證時(shí),Oauth API調(diào)用方法包括以下流程:
步驟S701,“客戶(hù)端OauthAPI請(qǐng)求接口”收到調(diào)用OauthAPI消息后打開(kāi)“客戶(hù)端觸發(fā)Oauth認(rèn)證流程界面”,提示用戶(hù)觸發(fā)授權(quán)認(rèn)證流程;用戶(hù)觸發(fā)認(rèn)證授權(quán)流程后,請(qǐng)求應(yīng)用運(yùn)行引擎進(jìn)行Oauth授權(quán);“客戶(hù)端請(qǐng)求OauthAPI接口”收到調(diào)用OauthAPI消息的內(nèi)容包括=OauthAPI名稱(chēng)、授權(quán)成功后轉(zhuǎn)向的業(yè)務(wù)頁(yè)面URL、調(diào)用OauthAPI時(shí)對(duì)應(yīng)的參數(shù)值;
步驟S702,應(yīng)用運(yùn)行引擎收到授權(quán)請(qǐng)求后,攔截請(qǐng)求并記錄URL、請(qǐng)求授權(quán)的OauthAPI 名稱(chēng);
步驟S703,應(yīng)用運(yùn)行引擎分配一個(gè)唯一標(biāo)識(shí)ClientKey作為客戶(hù)端合法標(biāo)識(shí)并記錄 ClientKey ;
步驟S704,根據(jù)請(qǐng)求的OauthAPI名稱(chēng)獲取其接口綁定信息;
步驟S705,根據(jù)綁定信息執(zhí)行授權(quán)認(rèn)證接口,獲取AccessToken ;
步驟S706,根據(jù) ClientKey 和 OauthAPI 名稱(chēng)記錄 AccessToken ;
步驟S707,重定向用戶(hù)到由記錄的URL和ClientKey組合生成的新的URL,客戶(hù)端獲取并記錄ClientKey ;
新的URL 例如為:http://huawe1.com ClientKey = ssdfjl23232323。
步驟S708,客戶(hù)端根據(jù)ClientKey請(qǐng)求應(yīng)用運(yùn)行引擎調(diào)用OauthAPI ;
步驟S709,獲取并記錄ClientKey、OauthAPI名稱(chēng)、請(qǐng)求URL、請(qǐng)求參數(shù)、回調(diào)接口名稱(chēng);
步驟S71 0,若認(rèn)證ClientKey合法,并判斷已授權(quán),則根據(jù)ClientKey和OauthAPI名稱(chēng)獲取記錄的AccessToken ;若認(rèn)證ClientKey非法則返回ClientKey無(wú)效信息,如果未授權(quán)則回到步驟S702重新進(jìn)行授權(quán);
步驟S711,注入獲取的AccessToken到請(qǐng)求中,發(fā)送請(qǐng)求到Oauth提供商;
步驟S712,回調(diào)客戶(hù)端接口,返回Oauth提供商返回信息。
在上述實(shí)施例的Oauth API調(diào)用方法中,通過(guò)以集中方式在服務(wù)器端執(zhí)行授權(quán)認(rèn)證,形成一對(duì)一模式,避免應(yīng)用客戶(hù)端與Oauth提供商直接交互的多對(duì)一模式,減少交互端點(diǎn),能夠降低敏感數(shù)據(jù)在互聯(lián)網(wǎng)上傳輸?shù)娘L(fēng)險(xiǎn)。
進(jìn)一步地,在上述實(shí)施例的Oauth API調(diào)用方法中,根據(jù)所述接口綁定信息進(jìn)行授權(quán)認(rèn)證具體包括:
從所述接口綁定信息中獲取授權(quán)認(rèn)證接口,并運(yùn)行所述授權(quán)認(rèn)證接口完成授權(quán)認(rèn)證;或
從所述接口綁定信息中獲取與Oauth SDK中接口對(duì)應(yīng)的接口映射信息,通過(guò)映射的接口名稱(chēng)及映射的參數(shù)名稱(chēng)調(diào)用所述Oauth SDK中的具體接口完成認(rèn)證授權(quán)。
根據(jù)上述實(shí)施例的OauthAPI調(diào)用方法,采用通用的方式調(diào)用執(zhí)行OauthAPI認(rèn)證流程接口,避免使用不同Oauth提供商提供的Oauth API而引入不同提供商的SDK浪費(fèi)空間。
圖8為本發(fā)明實(shí)施例的應(yīng)用運(yùn)行引擎的結(jié)構(gòu)示意圖。如圖7所示,該應(yīng)用運(yùn)行引擎包括:
客戶(hù)端客戶(hù)序列號(hào)管理模塊81,用于攔截客戶(hù)端請(qǐng)求消息,為所述客戶(hù)端分配客戶(hù)序列號(hào),并存儲(chǔ)客戶(hù)序列號(hào);
Oauth API調(diào)用請(qǐng)求接收模塊82,用于接收客戶(hù)端通過(guò)調(diào)用客戶(hù)端請(qǐng)求Oauth API接口發(fā)送的攜帶有所述客戶(hù)序列號(hào)的Oauth API調(diào)用請(qǐng)求;
鑒權(quán)模塊83,用于根據(jù)所述Oauth API調(diào)用請(qǐng)求所攜帶的客戶(hù)序列號(hào)對(duì)所述Oauth API調(diào)用進(jìn)行鑒權(quán),并在鑒權(quán)通過(guò)后,獲取與請(qǐng)求調(diào)用的Oauth API對(duì)應(yīng)的接口綁定信息;
授權(quán)認(rèn)證模塊84,用于根據(jù)所述接口綁定信息進(jìn)行授權(quán)認(rèn)證,獲取訪(fǎng)問(wèn)令牌;
Oauth API調(diào)用模塊85,將所述訪(fǎng)問(wèn)令牌注入所述Oauth API調(diào)用請(qǐng)求,并將注入所述訪(fǎng)問(wèn)令牌的Oauth API調(diào)用請(qǐng)求發(fā)送至Oauth提供商,以使所述Oauth API響應(yīng)注入所述訪(fǎng)問(wèn)令牌的Oauth API調(diào)用請(qǐng)求并返回Oauth API返回信息;
Oauth API返回信息處理模塊86,將所述Oauth API返回信息返回至客戶(hù)端,以完成Oauth API調(diào)用。
上述實(shí)施例的應(yīng)用運(yùn)行引擎執(zhí)行Oauth API調(diào)用的具體流程與上述實(shí)施例的Oauth API調(diào)用方法相同,故此處不再贅述。
根據(jù)上述實(shí)施例的應(yīng)用運(yùn)行引擎,通過(guò)自動(dòng)使用應(yīng)用開(kāi)發(fā)平臺(tái)提供的可執(zhí)行接口來(lái)完成Oauth API調(diào)用,實(shí)現(xiàn)了 Oauth API的便捷調(diào)用。
進(jìn)一步地,在上述實(shí)施例的應(yīng)用運(yùn)行引擎中,所述客戶(hù)端請(qǐng)求消息包括所述客戶(hù)端請(qǐng)求訪(fǎng)問(wèn)的URL。
進(jìn)一步地,在上述實(shí)施例的應(yīng)用運(yùn)行引擎中,所述客戶(hù)端請(qǐng)求消息包括客戶(hù)端請(qǐng)求調(diào)用的Oauth API標(biāo)識(shí)、授權(quán)成功后轉(zhuǎn)向的業(yè)務(wù)頁(yè)面URL,以及調(diào)用Oauth API的相應(yīng)參數(shù)值。
進(jìn)一步地,在上述實(shí)施例的應(yīng)用運(yùn)行引擎中,所述授權(quán)認(rèn)證模塊具體包括:
第一處理單元,用于根據(jù)所述接口綁定信息獲取授權(quán)認(rèn)證接口,并執(zhí)行所述授權(quán)認(rèn)證接口 ;
第二處理單元,執(zhí)行觸發(fā)用戶(hù)授權(quán)接口重定向Oauth提供商授權(quán)頁(yè)面時(shí),設(shè)置Oauth提供商的CALLBACK為應(yīng)用運(yùn)行引擎接收認(rèn)證結(jié)果服務(wù)的URL ;
第三處理單元,通過(guò)接收所述認(rèn)證結(jié)果服務(wù)獲取驗(yàn)證符,并獲取訪(fǎng)問(wèn)令牌;
第四處理單元,根據(jù)所存儲(chǔ)的客戶(hù)序列號(hào)、所述Oauth API標(biāo)識(shí)和所述訪(fǎng)問(wèn)令牌,將所述客戶(hù)序列號(hào)和所述Oauth API標(biāo)識(shí)進(jìn)行組合以作 為記錄所述訪(fǎng)問(wèn)令牌的標(biāo)識(shí),并記錄所述訪(fǎng)問(wèn)令牌。
本發(fā)明實(shí)施例還提供一種使用Oauth API的系統(tǒng),包括上述任一實(shí)施例的應(yīng)用開(kāi)發(fā)平臺(tái)和上述任一實(shí)施例的應(yīng)用運(yùn)行引擎。
根據(jù)上述實(shí)施例的使用Oauth API的系統(tǒng),通過(guò)對(duì)Oauth認(rèn)證邏輯進(jìn)行抽象,形成一套可通用的認(rèn)證接口,使開(kāi)發(fā)者在開(kāi)發(fā)應(yīng)用時(shí),由應(yīng)用開(kāi)發(fā)平臺(tái)自動(dòng)生成可執(zhí)行的接口并注入到應(yīng)用運(yùn)行引擎,以使應(yīng)用運(yùn)行引擎判斷客戶(hù)端需要Oauth API調(diào)用時(shí),可通過(guò)自動(dòng)執(zhí)行這些可執(zhí)行接口來(lái)完成Oauth API調(diào)用??梢钥闯?,在上述實(shí)施例的使用Oauth API的方法中,僅需開(kāi)發(fā)者將Oauth API注冊(cè)引用應(yīng)用開(kāi)發(fā)平臺(tái),即向應(yīng)用開(kāi)發(fā)平臺(tái)提供OauthAPI注冊(cè)信息,其余可執(zhí)行接口的生成及相關(guān)處理均由應(yīng)用開(kāi)發(fā)平臺(tái)自動(dòng)完成,極大地簡(jiǎn)化了應(yīng)用開(kāi)發(fā)程序,提高了開(kāi)發(fā)效率。
最后應(yīng)說(shuō)明的是:以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù) 方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。
權(quán)利要求
1.一種使用開(kāi)放授權(quán)應(yīng)用編程接口 Oauth API的方法,其特征在于,包括: 接收注冊(cè)O(shè)auth API的注冊(cè)信息; 根據(jù)所述注冊(cè)信息生成Oauth API調(diào)用關(guān)聯(lián)接口 ; 綁定所述Oauth API調(diào)用關(guān)聯(lián)接口與注冊(cè)的Oauth API,生成綁定信息; 接收增加Oauth API消息,響應(yīng)所述增加Oauth API消息,生成與所述注冊(cè)的OauthAPI對(duì)應(yīng)的客戶(hù)端請(qǐng)求Oauth API接口、Oauth API返回信息處理接口和客戶(hù)端客戶(hù)序列號(hào)管理接口 ; 接收發(fā)布應(yīng)用消息,響應(yīng)所述發(fā)布應(yīng)用消息,生成包括所述客戶(hù)端請(qǐng)求Oauth API接口、所述Oauth API返回信息處理接口和所述客戶(hù)端客戶(hù)序列號(hào)管理接口的部署包; 將所述綁定信息和所述部署包發(fā)送至所述應(yīng)用運(yùn)行引擎,以使所述應(yīng)用運(yùn)行引擎根據(jù)所述綁定信息和所述部署包完成Oauth API調(diào)度。
2.根據(jù)權(quán)利要求1所述的使用OauthAPI的方法,其特征在于,所述注冊(cè)令牌包括:所述注冊(cè)的Oauth API的名稱(chēng)、請(qǐng)求方法、統(tǒng)一資源定位符、輸入格式、輸出格式、是否需要開(kāi)放授權(quán)協(xié)議Oauth認(rèn)證標(biāo)識(shí)以及所述注冊(cè)的Oauth API對(duì)應(yīng)的Oauth域的域名。
3.根據(jù)權(quán)利要求1所述的使用OauthAPI的方法,其特征在于,接收注冊(cè)O(shè)auth API的注冊(cè)信息之前還包括: 接收注冊(cè)O(shè)auth域的注冊(cè)信息,所述注冊(cè)的Oauth域與所述注冊(cè)的Oauth API相對(duì)應(yīng)。
4.根據(jù)權(quán)利要求1所述的使用OauthAPI的方法,其特征在于,所述Oauth API調(diào)用關(guān)聯(lián)接口包括服務(wù)端Oauth API調(diào)用接口和授權(quán)認(rèn)證接口。
5.根據(jù)權(quán)利要求4所述的使用OauthAPI的方法,其特征在于,所述綁定信息包括所述注冊(cè)的Oauth API的名稱(chēng)、所述服務(wù)端Oauth API調(diào)用接口、所述授權(quán)認(rèn)證接口,以及接口執(zhí)行流程。
6.一種應(yīng)用開(kāi)發(fā)平臺(tái),其特征在 于,包括: Oauth API注冊(cè)模塊,用于接收注冊(cè)O(shè)auth API的注冊(cè)信息; 調(diào)用關(guān)聯(lián)接口生成模塊,用于根據(jù)所述注冊(cè)信息生成Oauth API調(diào)用關(guān)聯(lián)接口 ; 綁定模塊,用于綁定所述Oauth API調(diào)用關(guān)聯(lián)接口與注冊(cè)的Oauth API,生成綁定信息; 使用接口生成模塊,用于接收增加Oauth API消息,響應(yīng)所述增加Oauth API消息,生成與所述注冊(cè)的Oauth API對(duì)應(yīng)的客戶(hù)端請(qǐng)求Oauth API接口、Oauth API返回信息處理接口和客戶(hù)端客戶(hù)序列號(hào)管理接口; 部署模塊,用于接收發(fā)布應(yīng)用消息,響應(yīng)所述發(fā)布應(yīng)用消息,生成包括所述客戶(hù)端請(qǐng)求Oauth API接口、所述Oauth API返回信息處理接口和所述客戶(hù)端客戶(hù)序列號(hào)管理接口的部署包; 發(fā)送模塊,用于將所述綁定信息和所述部署包發(fā)送至所述應(yīng)用運(yùn)行引擎,以使所述應(yīng)用運(yùn)行引擎根據(jù)所述綁定信息和所述部署包完成Oauth API調(diào)度。
7.根據(jù)權(quán)利要求6所述的應(yīng)用開(kāi)發(fā)平臺(tái),其特征在于,所述注冊(cè)令牌包括:所述注冊(cè)的Oauth API的名稱(chēng)、請(qǐng)求方法、統(tǒng)一資源定位符、輸入格式、輸出格式、是否需要開(kāi)放授權(quán)協(xié)議Oauth認(rèn)證標(biāo)識(shí)以及所述注冊(cè)的Oauth API對(duì)應(yīng)的Oauth域的域名。
8.根據(jù)權(quán)利要求6所述的應(yīng)用開(kāi)發(fā)平臺(tái),其特征在于,還包括:Oauth域注冊(cè)模塊,用于接收注冊(cè)O(shè)auth域的注冊(cè)信息,所述注冊(cè)的Oauth域與所述注冊(cè)的Oauth API相對(duì)應(yīng)。
9.根據(jù)權(quán)利要求6所述的應(yīng)用開(kāi)發(fā)平臺(tái),其特征在于,所述調(diào)用關(guān)聯(lián)接口生成模塊包括: 服務(wù)端Oauth API調(diào)用關(guān)聯(lián)接口生成單元,用于生成服務(wù)端Oauth API調(diào)用接口 ; Oauth授權(quán)認(rèn)證接口生成單元,用于生成授權(quán)認(rèn)證接口。
10.根據(jù)權(quán)利要求9所述的應(yīng)用開(kāi)發(fā)平臺(tái),其特征在于,所述綁定信息包括所述注冊(cè)的Oauth API的名稱(chēng)、所述服務(wù)端Oauth API調(diào)用接口、所述授權(quán)認(rèn)證接口,以及接口執(zhí)行流程。
11.一種Oauth API調(diào)用方法,其特征在于,包括: 攔截客戶(hù)端請(qǐng)求消息,為所述客戶(hù)端分配客戶(hù)序列號(hào),并存儲(chǔ)客戶(hù)序列號(hào); 接收客戶(hù)端通過(guò)調(diào)用客戶(hù)端請(qǐng)求Oauth API接口發(fā)送的攜帶有所述客戶(hù)序列號(hào)的Oauth API調(diào)用請(qǐng)求; 根據(jù)所述Oauth API調(diào)用請(qǐng)求所攜帶的客戶(hù)序列號(hào)對(duì)所述Oauth API調(diào)用進(jìn)行鑒權(quán),并在鑒權(quán)通過(guò)后,獲取與請(qǐng)求調(diào)用的Oauth API對(duì)應(yīng)的接口綁定信息; 根據(jù)所述接口綁定信息進(jìn)行授權(quán)認(rèn)證,獲取訪(fǎng)問(wèn)令牌; 將所述訪(fǎng)問(wèn)令牌注入所述Oauth API調(diào)用請(qǐng)求,并將注入所述訪(fǎng)問(wèn)令牌的Oauth API調(diào)用請(qǐng)求發(fā)送至Oauth提供商,以使所述Oauth API響應(yīng)注入所述訪(fǎng)問(wèn)令牌的Oauth API調(diào)用請(qǐng)求并返回Oauth API返回信息; 將所述Oauth API返回信息返回至客戶(hù)端,以完成Oauth API調(diào)用。
12.根據(jù)權(quán)利要求11所述的OauthAPI調(diào)用方法,其特征在于,所述客戶(hù)端請(qǐng)求消息包括所述客戶(hù)端請(qǐng)求訪(fǎng)問(wèn)的URL。
13.根據(jù)權(quán)利要求11所述的OauthAPI調(diào)用方法,其特征在于,所述客戶(hù)端請(qǐng)求消息包括客戶(hù)端請(qǐng)求調(diào)用的Oauth API標(biāo)識(shí)、授權(quán)成功后轉(zhuǎn)向的業(yè)務(wù)頁(yè)面URL,以及調(diào)用OauthAPI的相應(yīng)參數(shù)值。
14.根據(jù)權(quán)利要求11至13任一所述的OauthAPI調(diào)用方法,其特征在于,根據(jù)所述接口綁定信息進(jìn)行授權(quán)認(rèn)證,獲取訪(fǎng)問(wèn)令牌具體包括: 根據(jù)所述接口綁定信息獲取授權(quán)認(rèn)證接口,并執(zhí)行所述授權(quán)認(rèn)證接口 ; 執(zhí)行觸發(fā)用戶(hù)授權(quán)接口重定向Oauth提供商授權(quán)頁(yè)面時(shí),設(shè)置Oauth提供商的CALLBACK為應(yīng)用運(yùn)行引擎接收認(rèn)證結(jié)果服務(wù)的URL ; 通過(guò)接收所述認(rèn)證結(jié)果服務(wù)獲取驗(yàn)證符,并獲取訪(fǎng)問(wèn)令牌; 根據(jù)所存儲(chǔ)的客戶(hù)序列號(hào)、所述Oauth API標(biāo)識(shí)和所述訪(fǎng)問(wèn)令牌,將所述客戶(hù)序列號(hào)和所述Oauth API標(biāo)識(shí)進(jìn)行組合以作為記錄所述訪(fǎng)問(wèn)令牌的標(biāo)識(shí),并記錄所述訪(fǎng)問(wèn)令牌。
15.根據(jù)權(quán)利要求11至13任一所述的OauthAPI調(diào)用方法,其特征在于,根據(jù)所述Oauth API調(diào)用請(qǐng)求所攜帶的客戶(hù)序列號(hào)對(duì)所述Oauth API調(diào)用進(jìn)行鑒權(quán)具體包括:判斷是否記錄有所述Oauth API調(diào)用請(qǐng)求所攜帶的客戶(hù)序列號(hào),若否則鑒權(quán)失?。蝗羰?,則對(duì)所述客戶(hù)序列號(hào)進(jìn)行解密,獲取所述客戶(hù)序列號(hào)對(duì)應(yīng)的明文信息,并根據(jù)所述客戶(hù)端請(qǐng)求獲取客戶(hù)端互聯(lián)網(wǎng)協(xié)議IP地址、當(dāng)前會(huì)話(huà)ID、請(qǐng)求應(yīng)用名稱(chēng)以及用戶(hù)標(biāo)識(shí);將所述明文信息與根據(jù)所述客戶(hù)端請(qǐng)求獲取的信息進(jìn)行對(duì)應(yīng)項(xiàng)匹配,若匹配則鑒權(quán)通過(guò),若不匹配則鑒權(quán)失敗。
16.根據(jù)權(quán)利要求11至13任一所述的OauthAPI調(diào)用方法,其特征在于,將所述OauthAPI返回信息返回至客戶(hù)端具體包括: 根據(jù)所述Oauth API返回信息生成腳本并將所述腳本推送注入所述客戶(hù)端;或 通過(guò)回調(diào)客戶(hù)端接口,將所述Oauth API返回信息返回至所述客戶(hù)端。
17.根據(jù)權(quán)利要求11至13任一所述的OauthAPI調(diào)用方法,其特征在于,根據(jù)所述接口綁定信息進(jìn)行授權(quán)認(rèn)證具體包括: 從所述接口綁定信息中獲取授權(quán)認(rèn)證接口,并運(yùn)行所述授權(quán)認(rèn)證接口完成授權(quán)認(rèn)證;或 從所述接口綁定信息中獲取與Oauth SDK中接口對(duì)應(yīng)的接口映射信息,通過(guò)映射的接口名稱(chēng)及映射的參數(shù)名稱(chēng)調(diào)用所述Oauth SDK中的具體接口完成認(rèn)證授權(quán)。
18.一種應(yīng)用運(yùn)行引擎,其特征在于,包括: 客戶(hù)端客戶(hù)序列號(hào)管理模塊,用于攔截客戶(hù)端請(qǐng)求消息,為所述客戶(hù)端分配客戶(hù)序列號(hào),并存儲(chǔ)客戶(hù)序列號(hào); Oauth API調(diào)用請(qǐng)求接收模塊,用于接收客戶(hù)端通過(guò)調(diào)用客戶(hù)端請(qǐng)求Oauth API接口發(fā)送的攜帶有所述客戶(hù)序列號(hào)的Oauth API調(diào)用請(qǐng)求; 鑒權(quán)模塊,用于根據(jù)所述Oauth API調(diào)用請(qǐng)求所攜帶的客戶(hù)序列號(hào)對(duì)所述Oauth API調(diào)用進(jìn)行鑒權(quán),并在鑒權(quán)通過(guò)后 ,獲取與請(qǐng)求調(diào)用的Oauth API對(duì)應(yīng)的接口綁定信息; 授權(quán)認(rèn)證模塊,用于根據(jù)所述接口綁定信息進(jìn)行授權(quán)認(rèn)證,獲取訪(fǎng)問(wèn)令牌; Oauth API調(diào)用模塊,將所述訪(fǎng)問(wèn)令牌注入所述Oauth API調(diào)用請(qǐng)求,并將注入所述訪(fǎng)問(wèn)令牌的Oauth API調(diào)用請(qǐng)求發(fā)送至Oauth提供商,以使所述Oauth API響應(yīng)注入所述訪(fǎng)問(wèn)令牌的Oauth API調(diào)用請(qǐng)求并返回Oauth API返回信息; Oauth API返回信息處理模塊,將所述Oauth API返回信息返回至客戶(hù)端,以完成OauthAPI調(diào)用。
19.根據(jù)權(quán)利要求18所述的應(yīng)用運(yùn)行引擎,其特征在于,所述客戶(hù)端請(qǐng)求消息包括所述客戶(hù)端請(qǐng)求訪(fǎng)問(wèn)的URL。
20.根據(jù)權(quán)利要求18所述的應(yīng)用運(yùn)行引擎,其特征在于,所述客戶(hù)端請(qǐng)求消息包括客戶(hù)端請(qǐng)求調(diào)用的Oauth API標(biāo)識(shí)、授權(quán)成功后轉(zhuǎn)向的業(yè)務(wù)頁(yè)面URL,以及調(diào)用Oauth API的相應(yīng)參數(shù)值。
21.根據(jù)權(quán)利要求18至20任一所述的應(yīng)用運(yùn)行引擎,其特征在于,所述授權(quán)認(rèn)證模塊具體包括: 第一處理單元,用于根據(jù)所述接口綁定信息獲取授權(quán)認(rèn)證接口,并執(zhí)行所述授權(quán)認(rèn)證接口 ; 第二處理單元,執(zhí)行觸發(fā)用戶(hù)授權(quán)接口重定向Oauth提供商授權(quán)頁(yè)面時(shí),設(shè)置Oauth提供商的CALLBACK為應(yīng)用運(yùn)行引擎接收認(rèn)證結(jié)果服務(wù)的URL ; 第三處理單元,通過(guò)接收所述認(rèn)證結(jié)果服務(wù)獲取驗(yàn)證符,并獲取訪(fǎng)問(wèn)令牌; 第四處理單元,根據(jù)所存儲(chǔ)的客戶(hù)序列號(hào)、所述Oauth API標(biāo)識(shí)和所述訪(fǎng)問(wèn)令牌,將所述客戶(hù)序列號(hào)和所述Oauth API標(biāo)識(shí)進(jìn)行組合以作為記錄所述訪(fǎng)問(wèn)令牌的標(biāo)識(shí),并記錄所述訪(fǎng)問(wèn)令牌。
22.—種使用Oauth API的系統(tǒng),其特征在于,包括如權(quán)利要求6至10任一所述的應(yīng)用開(kāi)發(fā)平臺(tái),和如權(quán)利要求18至21任一所述的應(yīng)用運(yùn)行引擎。
全文摘要
本發(fā)明提供Oauth API的使用、調(diào)用方法、設(shè)備及系統(tǒng)。該使用Oauth API的方法包括接收注冊(cè)O(shè)auth API的注冊(cè)信息;根據(jù)注冊(cè)信息生成Oauth API調(diào)用關(guān)聯(lián)接口,并將其與注冊(cè)的Oauth API綁定,生成綁定信息;接收增加Oauth API消息并響應(yīng),生成與所述注冊(cè)的Oauth API對(duì)應(yīng)的客戶(hù)端請(qǐng)求Oauth API接口、Oauth API返回信息處理接口和客戶(hù)端客戶(hù)序列號(hào)管理接口;接收發(fā)布應(yīng)用消息,響應(yīng)所述發(fā)布應(yīng)用消息,生成包括所述客戶(hù)端請(qǐng)求Oauth API接口、所述Oauth API返回信息處理接口和所述客戶(hù)端客戶(hù)序列號(hào)管理接口的部署包;將所述綁定信息和所述部署包發(fā)送至所述應(yīng)用運(yùn)行引擎,以使所述應(yīng)用運(yùn)行引擎根據(jù)所述綁定信息和所述部署包完成Oauth API調(diào)度。
文檔編號(hào)H04L29/06GK103220259SQ20121001887
公開(kāi)日2013年7月24日 申請(qǐng)日期2012年1月20日 優(yōu)先權(quán)日2012年1月20日
發(fā)明者趙清偉, 徐文華 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1