自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

通用社區(qū)登陸組件技術(shù)分享中篇:OAuth登陸組件流程

開發(fā) 項(xiàng)目管理
本文主要講解了第三方社區(qū)賬號(hào)登陸的授權(quán)流程,OAuth2 組件的下載及web.config配置以及OAuth2 組件的5行代碼編寫流程。詳細(xì)請(qǐng)看下文

上節(jié)內(nèi)容:通用社區(qū)登陸組件技術(shù)分享(開源)上篇:OAuth 授權(quán)登陸介紹

本節(jié)包括以下內(nèi)容: 

  1. 第三方社區(qū)賬號(hào)登陸的授權(quán)流程  
  2. OAuth2 組件的下載及web.config配置  
  3. OAuth2 組件的5行代碼編寫流程  
  4. 總結(jié)與下節(jié)內(nèi)容預(yù)告 

一: 第三方社區(qū)賬號(hào)登陸的授權(quán)流程

1:首先從這里開始:用戶進(jìn)入登陸界面

 

2:用戶點(diǎn)擊用新浪微博或QQ登陸,系統(tǒng)跳到第三方授權(quán)頁(yè)面,(QQ示例授權(quán)界面)


 

3:確定授權(quán)后,第三方跳轉(zhuǎn)返回你的回調(diào)頁(yè)(在應(yīng)用里設(shè)置),通常仍是系統(tǒng)登陸頁(yè)面統(tǒng)一處理。授權(quán)用戶綁定您網(wǎng)站的賬號(hào)。

 

我們首次引導(dǎo)登陸并綁定賬號(hào),當(dāng)然,官方建議的比較好的用戶體驗(yàn)的界面是這樣的:

connect_UI_5.png  

4:用戶正常登陸或注冊(cè)新賬號(hào),自動(dòng)實(shí)現(xiàn)綁定,至此流程結(jié)束,下一次用戶點(diǎn)用第三方賬號(hào)登陸時(shí),系統(tǒng)檢測(cè)到已綁定賬號(hào),直接用綁定的賬號(hào)進(jìn)入后臺(tái)。

二:OAuth2 組件的下載及web.config配置 

1:下載OAuth2.dll組件,下載:[[102345]] OAuth2.rar(download times)

2:引用該dll到您的網(wǎng)站項(xiàng)目中;

3:在web.config配置您的appkey、appsercet及回調(diào)網(wǎng)址(通常是登陸頁(yè)面),相關(guān)的數(shù)據(jù)填寫到web.config對(duì)應(yīng)key的value里。

PS:獲取或調(diào)置回調(diào)網(wǎng)址是在新浪和QQ開放者平臺(tái)操作的,相關(guān)網(wǎng)址見上節(jié)文章。

 

接下來(lái),我們要在登陸界面(示如Login.aspx)動(dòng)點(diǎn)小手術(shù): 

三:OAuth2 組件的5行代碼編寫流程

  1. OAuth2.UI.GetHtml() //獲取界面顯示 

代碼示例:通常我們可能會(huì)在Login.aspx的html里寫上這么一行代碼來(lái)顯示: <%=OAuth2.UI.GetHtml()%>

當(dāng)然我們也經(jīng)常喜歡在Login.aspx.cs后臺(tái)代碼(通常是Page_Load事件)里輸出:div控件ID.InnerHtml=OAuth2.UI.GetHtml(); 

于是就有了剛才的登陸界面下面那兩個(gè)第三方授權(quán)鏈接圖標(biāo):

 

用戶點(diǎn)擊第三方授權(quán),跳到第三方授權(quán)頁(yè)面,操作完回調(diào)還會(huì)返回到這個(gè)登陸界面,只是多了兩個(gè)參數(shù)code=xxxx&state=xxx(回調(diào)頁(yè)面仍設(shè)置登陸頁(yè))。

  1. OAuth2.OAuth2Base ob = OAuth2.OAuth2Factory.Current;//獲取當(dāng)前的授權(quán)類型,如果成功,則緩存到Session中。   
  2. ob.Authorize(out account)//檢測(cè)是否授權(quán)成功,并返回綁定的賬號(hào)。 

這兩行代碼,是寫在Page_Load事件中,判斷如果是跳轉(zhuǎn)回來(lái)的,就分析授權(quán),然后進(jìn)行分支處理:

以下是示例的分支代碼:

  1. OAuth2.OAuth2Base ob = OAuth2.OAuth2Factory.Current;//獲取當(dāng)前的授權(quán)類型  
  2. if (ob != null//說(shuō)明用戶點(diǎn)擊了授權(quán),并返回到登陸界面來(lái)  
  3. {  
  4.     string account = string.Empty;  
  5.     if (ob.Authorize(out account))//檢測(cè)是否授權(quán)成功,并返回綁定的賬號(hào)(具體是綁定ID還是用戶名,你的選擇)  
  6.     {    
  7.       if (!string.IsNullOrEmpty(account))//已綁定賬號(hào),直接用該賬號(hào)設(shè)置登陸。  
  8.       {  
  9.           //根據(jù)賬號(hào),設(shè)置登陸、設(shè)置cookie,跳轉(zhuǎn)到后臺(tái)管理界面。  
  10.       }  
  11.       else // 未綁定賬號(hào),引導(dǎo)提示用戶綁定賬號(hào)。  
  12.       {  
  13.            //取用戶的第三方頭像和昵稱,組裝界面顯示,像秋色園就一行提示文字             
  14.       }  
  15. }  
  16. else // 讀取授權(quán)失敗。  
  17. {  
  18.      //提示用戶重試,或改用其它社區(qū)方法登陸。  
  19.  

如果用戶已經(jīng)授權(quán),首次未綁定賬號(hào),通常就有了最下方的提示文字,同時(shí)“登陸”的文字就改成了“綁定賬號(hào)":

  

4:OAuth2.OAuth2Base ob = OAuth2.OAuth2Factory.SessionOAuth;//獲取存在Session的授權(quán)

5:ob.SetBindAccount(userName);//綁定賬號(hào)

這兩行代碼,寫在BtnLogin和BtnRegister按鈕的事件中,當(dāng)用戶登陸,或注冊(cè)新賬號(hào)時(shí),我們從Session中獲取剛剛的社區(qū)授權(quán),然后綁定賬號(hào):

  1. //用戶登陸,或注冊(cè)完賬號(hào)(這時(shí)我們可以拿到ID或者username,綁定哪個(gè)就看使用哪個(gè)方便了,我們添加以下三行代碼,  
  2. OAuth2.OAuth2Base ob = OAuth2.OAuth2Factory.SessionOAuth;//獲取剛剛的授權(quán)(授權(quán)后存在Session中)  
  3. if (ob != null && !string.IsNullOrEmpty(ob.openID))  
  4. {  
  5.    ob.SetBindAccount(userName);//綁定賬號(hào)username或id都可以  
  6. } 

到這里,整個(gè)應(yīng)用就完成了,就是這么簡(jiǎn)單,除配置項(xiàng),組件提供的關(guān)鍵的代碼只有5行,卻實(shí)現(xiàn)了相關(guān)的功能。

四:總結(jié)與下節(jié)內(nèi)容預(yù)告

 

A:看完本文,您應(yīng)該可以獲取到以下信息:

  1. 知道OAuth授權(quán)的界面流程  
  2. 知道怎么實(shí)現(xiàn)這個(gè)授權(quán)流程。 

 

B:如果您認(rèn)真看完本節(jié),或自己實(shí)操下,您可能有以下問(wèn)題想問(wèn):

  1. 和網(wǎng)站綁定授權(quán),沒(méi)看到相關(guān)的數(shù)據(jù)庫(kù)操作,那獲取的token和openid存在哪?  
  2. 如何修改界面,或自定義UI界面?  
  3. 有沒(méi)有源碼? 

也許,下面這句話給了您答案:下節(jié),將開放源碼下載并嘗試為您講解源碼中的組件設(shè)計(jì)思路,敬請(qǐng)關(guān)注。

51cto大賽的參賽頁(yè)面,感謝路過(guò)的朋友也順手扔一票:http://blog.51cto.com/contest2012/2127378

原文鏈接:http://www.cnblogs.com/cyq1162/archive/2012/11/06/2756247.html

責(zé)任編輯:林師授 來(lái)源: 博客園
相關(guān)推薦

2012-11-07 10:01:52

組件技術(shù)OAuth授權(quán)登陸

2022-06-01 22:35:25

滑桿組件鴻蒙

2011-04-28 10:41:12

simpleframeSimple

2010-01-27 09:08:43

Windows 7瘦身

2010-07-22 17:14:37

2011-07-20 09:27:37

Scala

2009-01-12 17:34:11

服務(wù)器虛擬化VMware

2009-07-16 15:14:27

WebWork用戶登陸

2010-04-21 17:20:03

Unix遠(yuǎn)程

2011-03-08 13:52:25

Proftpd

2022-07-29 14:36:43

SUSE開源Linux

2009-11-25 17:31:15

Visual Stud

2015-06-03 18:53:44

ANSYS 中國(guó)技術(shù)大

2011-02-25 17:07:25

2021-08-28 18:29:46

微軟Windows 11Windows

2012-02-14 10:46:15

WP Marketpl雜志月刊

2010-08-18 08:21:49

Adobe AIRAndroid

2009-12-15 17:28:58

戴爾互聯(lián)課堂

2009-02-18 22:19:24

AD用戶登陸實(shí)現(xiàn)限制

2011-04-02 12:42:19

戴爾技術(shù)論壇
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)