學(xué)習(xí)HM微博項目第4天

步驟:OAuth授權(quán)01_加載登錄界面 -> OAuth授權(quán)02_獲得accessToken -> OAuth授權(quán)03_存儲賬號信息 -> OAuth授權(quán)04_封裝賬號存儲 -> OAuth授權(quán)05_封裝控制器的切換

OAuth授權(quán)01_加載登錄界面

為了測試方便携茂,暫時把window的根控制器固定設(shè)置為授權(quán)控制器鸳谜,如下:

window的根控制器.png

在HMOAuthViewController類(繼承UIViewController)的viewDidLoad方法中览绿,新建一個webView類逛绵,并用webView加載登陸界面(新浪提供的),如下:

viewDidLoad方法.png

APP的界面:

APP的界面.png

OAuth授權(quán)02_獲得accessToken

在前文中已經(jīng)加載登陸界面法焰,輸入賬號信息后并點擊登陸按鈕后陕赃,通過-webView:shouldStartLoadWithRequest:navigationType:方法攔截url請求,并從中判斷是否為回調(diào)地址梧疲,若是就利用code的請求標(biāo)識(授權(quán)成功后的request token)換取一個accessToken。如下:

-webView:shouldStartLoadWithRequest:navigationType:方法.png

具體如何利用code的請求標(biāo)識(授權(quán)成功后的request token)換取一個accessToken可看accessTokenWith:方法,如下:

accessTokenWith:方法.png

注意:這里的網(wǎng)絡(luò)請求用的是AFN框架喂分,并且由于新浪返回的數(shù)據(jù)Content-Type是text/plain類型的原因,需要對AFN的AFJSONResponseSerializer做下修改。

授權(quán)成功后APP會進入回調(diào)地址的頁面,這里的回調(diào)地址為www.baidu.com。如下:

回調(diào)地址的頁面.png

OAuth授權(quán)03_存儲賬號信息

在授權(quán)成功后颜懊,利用code向新浪服務(wù)器發(fā)送請求,成功后會向返回賬號的相關(guān)信息侄刽,這時候應(yīng)該對賬號信息進行存儲,避免以后需要再次對應(yīng)用進行授權(quán)徙垫。

在前文的發(fā)送請求代碼中繼續(xù)完善請求成功的代碼荣瑟,如下:

請求成功的代碼.png

說明:
1.返回的賬號字典數(shù)據(jù)要轉(zhuǎn)換成數(shù)據(jù)模型進行存儲霹娄,并且用歸檔的方式進行存儲。
2.請求成功后APP應(yīng)該切換窗口的控制器,而不能再進入回調(diào)地址的頁面漩氨,所以要在-webView:shouldStartLoadWithRequest:navigationType:禁止加載回調(diào)地址蔗坯,如下:

禁止加載回調(diào)地址.png

3.在請求成功后切換窗口的控制器需要對版本進行判斷,另外APPDelegate類也需要修改下择卦,之前暫時把window的根控制器固定設(shè)置為授權(quán)控制器,現(xiàn)在需要通過是否存儲過賬號信息對根控制器進行選擇,如下:

APPDelegate類.png

4.HMAccount賬號模型歸檔和解檔要特別注意遵守NSCoding協(xié)議月褥,否則會出現(xiàn)這樣的錯誤信息:


歸檔和解檔沒遵守NSCoding協(xié)議.png

HMAccount.m的具體代碼如下:

HMAccount.m.png

HMAccount.h的具體代碼如下:

HMAccount.h.png

OAuth授權(quán)04_封裝賬號存儲

前文中佛猛,將返回的賬號字典數(shù)據(jù)存進賬號模型和存進沙盒的操作應(yīng)該抽取出來并封裝到HMAccount和HMAccountTool兩個類中码荔,如下:

封裝賬號存儲 .png

HMAccountTool.m的具體代碼如下:

HMAccountTool.m.png

說明:
1.saveAccount:方法除了存儲前文必要的賬號信息,還需要存儲獲得賬號存儲的時間(accessToken的產(chǎn)生時間),以便以后授權(quán)過期提醒用戶重新登錄。
具體代碼如下:

saveAccount:方法.png

2.由于還要存儲獲得賬號存儲的時間(accessToken的產(chǎn)生時間),所以要對HMAccount做下修改戒良,添加created_time屬性奏司,并對歸檔encodeWithCoder:方法和解檔initWithCoder:方法做下修改黄锤。

3.在APPDelegate類中,可對之前的代碼進行簡化(直接通過HMAccountTool的account:方法取出HMAccount的賬號數(shù)據(jù))奏篙,如下:

APPDelegate類.png

4.account方法中,如果賬號過期,應(yīng)該返回nil(即會重新返回登錄界面)蔓倍,具體代碼:

屏幕快照 2015-09-07 下午8.07.57.png

OAuth授權(quán)05_封裝控制器的切換

前文窗口的根控制器的切換在多處地方使用到,所以應(yīng)該對其進行封裝环疼。這里,只需要做簡單的版本判斷來切換控制器栅贴,所以沒必要特意新建一個類來封裝斟湃,只要通過category對UIWindow進行擴展就可以厨剪,具體如下:

UIWindow+Extension.png

說明:
1.AppDelegate類的代碼:

AppDelegate類.png

2.在HMOAuthViewController類中,可以:

HMOAuthViewController類.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子惧盹,更是在濱河造成了極大的恐慌乳幸,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钧椰,死亡現(xiàn)場離奇詭異粹断,居然都是意外死亡,警方通過查閱死者的電腦和手機嫡霞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門瓶埋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人诊沪,你說我怎么就攤上這事养筒。” “怎么了端姚?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵晕粪,是天一觀的道長。 經(jīng)常有香客問我渐裸,道長巫湘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任昏鹃,我火速辦了婚禮尚氛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘洞渤。我一直安慰自己阅嘶,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布您宪。 她就那樣靜靜地躺著奈懒,像睡著了一般奠涌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上磷杏,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天溜畅,我揣著相機與錄音,去河邊找鬼极祸。 笑死慈格,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的遥金。 我是一名探鬼主播浴捆,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼稿械!你這毒婦竟也來了选泻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤美莫,失蹤者是張志新(化名)和其女友劉穎页眯,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體厢呵,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡窝撵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了襟铭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碌奉。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖寒砖,靈堂內(nèi)的尸體忽然破棺而出赐劣,到底是詐尸還是另有隱情,我是刑警寧澤入撒,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布隆豹,位于F島的核電站,受9級特大地震影響茅逮,放射性物質(zhì)發(fā)生泄漏璃赡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一献雅、第九天 我趴在偏房一處隱蔽的房頂上張望碉考。 院中可真熱鬧,春花似錦挺身、人聲如沸侯谁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽墙贱。三九已至热芹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間惨撇,已是汗流浹背伊脓。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留魁衙,地道東北人报腔。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像剖淀,于是被迫代替她去往敵國和親纯蛾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,754評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫纵隔、插件翻诉、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,059評論 4 62
  • 在開發(fā)安卓的時候,我們會封裝自己的library 巨朦,但是每次新建項目都需要搬遷library米丘,代碼搬遷是比較麻煩的...
    老夫掐指一算z閱讀 467評論 0 1
  • 數(shù)風(fēng)流人物,還看今朝糊啡。 魯迅說過:必須敢于正視,這才可望吁津,敢想棚蓄,敢說,敢做碍脏,敢當(dāng)梭依。 放在今天來講,就是一部風(fēng)流人物...
    millionking518閱讀 384評論 0 1
  • 今日反思 2月份在倒計時典尾,但是卻發(fā)現(xiàn)焦慮的人有很多役拴,原因真的只是我們做的太少,而想的太多钾埂,當(dāng)我們有時間去埋怨...
    靜姝__閱讀 62評論 0 0