今日寫的博客
引來很多園子裡的朋友問候,所以今日花了一些時間整理了代碼。
現已發布至github:
MrHuo.OAuthLoginLibs:https://github.com/mrhuo/MrHuo.OAuthLoginLibs
MrHuo.OAuthLogin.QQApis:https://github.com/mrhuo/MrHuo.OAuthLogin.QQApis
MrHuo.OAuthLoginLibs項目內的OAuthLoginDLLs是編譯好的最新dll。
歡迎朋友們共同努力讓這個組件走得更遠。
先說下代碼結構:
一、引用:
代碼中使用了RestSharp作為網絡訪問。
關於RestSharp的介紹可以看(善友兄的)這篇文章:http://www.cnblogs.com/shanyou/archive/2012/01/27/RestSharp.html
代碼中使用了DynamicJson作為Json解析。為什麼選擇此組件,因為他可以序列化對象為dynamic,而不用新建對象。
-------------------------------不美的分割線-----------------------------------------
二、代碼圖:
可以看出核心就是interfaces和core。此版本中包含中文簡體、中文繁體、英文的資源文件。
-------------------------------不美的分割線-----------------------------------------
再看看core程序集的代碼圖:
1、AuthStateManager維護了一個內部的狀態機,為了驗證每次OAuth驗證時帶給第三方平台的狀態。
2、AuthConfigManager管理已配置的配置文件。
3、OAuthToken是一個通用的Token基類,可根據不同平台繼續擴展,目前已基本無需改動。
4、OAuthLoginResult是OAuth驗證結果類。
5、OAuthContextBase<TOAuthToken, TUserInfo>是獲取用戶信息的上下文,是個抽象類。
具體實現參照這個項目MrHuo.OAuthLogin.QQApis
6、核心類就是OAuthLogin,只需要運用這一個類就可以執行OAuth登錄了。
我在對象浏覽器裡截了張圖:
-------------------------------不美的分割線-----------------------------------------
三、使用代碼可以參考文頭的文章。
看看使用效果:
1、QQ登錄:
2、Sina效果:
3、Baidu效果:
其他登錄因筆者沒有申請到合適的key,所以無法得知結果如何。還請各位園子裡的園友驗證後告訴我。
四、其實OAuth登錄到此還未完畢,接下來做的事就是,把獲取到的用戶的openid保存到數據庫,創建一個網站內部用戶和openid綁定。
接下來的工作就靠大家了。希望大家能喜歡這個組件。 just fork it.
聯系方式:http://www.mrhuo.com
qq:491217650