上圖是一鍵登錄的界面。
下面文章出自NanBoxlv的博客。https://juejin.im/post/5d197adff265da1bb31c4fa9
登錄方式
一、賬號 + 密碼
之前都是這種登錄方式。
這種方式要用戶要記住自己的賬號和密碼。
二、手機號 + 驗證碼
輸入手機號、等待驗證碼短信、輸入驗證碼、點擊登錄。
三、一鍵登錄
就是本文的第一張圖所示。
獲取到當前手機使用的手機卡號,直接使用這個號碼進行登錄,這就是一鍵登錄。
運營商 有了自己的開放平臺 來開放相關獲取手機卡號的服務:
- 移動 - 互聯網能力開放平臺
- 電信 - 天翼賬號開放平臺
- 聯通 - WO+ 開放平臺
取號流程
要使用一鍵登錄,需要接入運營商的 SDK,三大運營商使用了同一套授權流程:
- SDK 初始化。傳入項目在平臺上的 AppKey 和 AppSecret。
- 喚起授權頁
調用 SDK 喚起授權接口。SDK 會先向運營商發起獲取手機號掩碼的請求,請求成功後跳轉到授權頁。授權頁會顯示手機號掩碼以及運營商協議給用戶確認。
- 同意授權並登錄
用戶同意相關協議,點擊授權頁面的登錄按鈕,SDK 會請求本次取號的 token,請求成功後將 token 返回給客戶端。
- 取號
將獲取到的 token 發送到我們自己的服務器,由服務器攜帶 token 調用運營商一鍵登錄的接口,調用成功就返回手機號碼了。服務器用手機號進行登錄或註冊操作,返回操作結果給客戶端,完成一鍵登錄。
授權頁
文章的一個圖片就是授權頁。
授權頁是第三方的頁面,我們無法自由修改頁面樣式,但 SDK 裡提供了足夠豐富的接口給我們自定義樣式。
前面說到,在授權頁顯示之前需要先請求到手機號掩碼,用於在授權頁展示。為了增加授權頁的跳轉速度,減少用戶等待的時間,通常 SDK 會提供一個預取號的接口給我們,這個接口取的就是手機號掩碼。我們可以在打開 APP 的時候就調用這個接口,在已經取得掩碼的情況下,用戶點擊跳轉授權頁面就不需要再等待了。算是對用戶體驗的一個小優化。
網絡
在認證過程中,會把網絡切換為移動蜂窩網絡,目前支持的制式有中國移動 2G/3G/4G、中國聯通 3G/4G、中國電信 4G。當然最好是使用 4G,使用 2G、3G 會降低認證的成功率。
在沒有插電話卡,或者關閉移動蜂窩網絡的情況下,是無法完成認證的。所以就算接入了一鍵登錄,我們也要兼容傳統的登錄方式,允許用戶在認證失敗的情況下,手動輸入手機號登錄。
兼容三大運營商
三家運營商都擁有自己的 SDK,但各自的 SDK 不一定支持別家的認證。這導致目前許多接入了一鍵登錄的產品,只支持某一個運營商。
如果要兼容三大運營商,就需要分別接入三個 SDK。現在我們也有更簡單的方法,就是接入一個整合了三大運營商認證能力的第三方 SDK,目前主要有以下幾家:
- 阿里 - 號碼認證服務
- 創藍 - 閃驗
- 極光 - 極光認證
- mob - 秒驗
原理和使用方法基本都是一樣的,具體大家可以查看它們的文檔。
計費
講一下我們比較關心的價格問題,我瞭解了運營商和上面提到那幾家的計價,認證一次的價格集中在 4 到 6 分錢不等,其中最便宜的是 mob 的秒驗。但價格可能會變化,這裡就不具體討論了。
一般是成功置換到手機號算一次計費,調用預取號接口和認證失敗,都是不計費的。
總的來說,一鍵登錄和發送驗證短信的價格差不多。發送短信是發送一條就計費一次,但用戶存在需要多次獲取驗證碼才能登錄成功的情況。而一鍵登錄能置換到手機號,基本就意味著登錄成功了。所以從次數上考慮,接入一鍵登錄應該還能稍微省一點。