TouchID 指紋識別是IPhone 5s設備新增的一項重大功能,用于數據加密和安全。而在IOS 8.0 以后也向第三方開放了相應功能API,我們可以利用這個API做相應的用戶驗證和登錄的功能,省去輸入密碼的環節,提高登錄的用戶體驗。
TouchID
App集成TouchID的效果
TouchID 登錄成功
TouchID API
官方文檔
API比較簡單,在IOS 8 以上的app 包中,添加Libraries:LocalAuthentication Framework,有以下兩個方法
canEvaluatePolicy
監測設備是否支持TouchID,返回BOOL,并且若不支持,則在error里面返回相應狀態
evaluatePolicy
TouchID驗證狀態,在block里面返回驗證狀態(BOOL)和error;
從官方API看出,僅僅提供TouchID的支持狀態和驗證狀態(BOOL),并不提供關于本設備或本app任何可關聯的信息,所以集成TouchID還需自行設計關聯和流程,才能實現指紋登錄的功能,否則只驗證TouchID,對于需在app中登錄賬號,并沒什么作用。
邏輯設計
設備綁定
在設備第一次使用指紋登錄之前,必須先登錄原有的賬號(app注冊賬號),進行設備(用戶)綁定。圖1所示
開啟:在app登錄后,在“用戶信息-安全”,點擊開啟“指紋登錄”;
驗證TouchID:檢測當前設備是否支持TouchID,若支持則發起TouchID驗證;
生成設備賬號/密碼:TouchID驗證通過后,根據當前已登錄的賬號和硬件設備Token,生成設備賬號/密碼(規則可自定,密碼要長要復雜),并保存在keychain;
綁定:生成設備賬號/密碼后,將原賬號及設備賬號/密碼,加密后(題主使用的是RSA加密)發送到服務端進行綁定;
成功:驗證原賬號及設備賬號有效后,返回相應狀態,綁定成功則完成整個TouchID(設備)綁定流程。
圖1:TouchID 綁定/解除綁定
設備(指紋)登陸
在設備(用戶)綁定之后,并且用戶賬號退出后,可以使用指紋登錄,若當前設備未綁定,則不會出現“指紋登錄”按鈕。圖2所示
TouchID登錄:在用戶登錄界面,點擊“指紋登錄”;
驗證TouchID:檢測當前設備是否支持TouchID,若支持則發起TouchID驗證;
登錄:讀取app在本機的設備賬號/密碼,調用設備登錄接口,發起登錄請求;
成功:驗證設備賬號/密碼后,返回相應狀態,登錄成功則完成整個TouchID登錄流程。
圖2:TouchID 驗證
*在設備(用戶)綁定之后,并且當前正處于登錄狀態,也可以將本設備取消綁定,流程基本與綁定流程雷同,不再重復。
小結
TouchID API 非常簡單,僅僅對本設備的TouchID進行驗證,但如果需要在app集成相應的 “設備登錄/驗證”功能或其他TouchID 的應用,則需自行設計關聯和綁定流程(例如在本app中使用的關聯:設備Token、生成設備賬號/密碼、app包名/版本),綁定之后,才能使用TouchID 進行驗證和應用。
文/tumg的LNMP_IOS小集(簡書作者)
原文鏈接:http://www.lxweimin.com/p/85689f7f183e