登錄方式
我們先來看一下目前的一些登錄方式。
賬號 + 密碼
使用賬號加密碼是最傳統(tǒng)的登錄方式循狰,可以說是簡單粗暴的窟社,一般也不會出現(xiàn)什么問題。
缺點
但這種方式要求用戶要記住自己的賬號和密碼绪钥,也就是有一個記憶成本灿里。用戶為了降低記憶成本,很可能會在不同平臺使用同一套賬號密碼程腹。從安全角度考慮匣吊,一旦某個平臺的賬號密碼泄露了,會連累到該用戶使用的其他平臺寸潦。
另外色鸳,由于賬號和個人身份無關(guān),意味著同一個用戶可以注冊多個不同的賬號见转,也就是可能會有惡意注冊的情況發(fā)生命雀。
為解決這兩個問題,理想的情況就是使用一個和用戶身份強關(guān)聯(lián)的東西來作為賬號斩箫。但用什么呢吏砂?總不能拿身份證做賬號吧撵儿。
這個問題一直沒有一個好的回答,直到手機卡強制實名制狐血。
手機號 + 驗證碼
從手機卡實名制開始淀歇,手機號已經(jīng)成為我們的另一個身份證明。
使用手機號加驗證碼的登錄方式目前已經(jīng)成為主流匈织,和輸入賬號密碼相比浪默,它可以更好的驗證用戶身份,可以防止惡意注冊报亩,用戶不用再去記自己的賬號密碼浴鸿,增加了安全性。現(xiàn)在用戶也習(xí)慣并接受了這種登錄方式弦追。
現(xiàn)在很多產(chǎn)品還把登錄和注冊的流程進行了結(jié)合岳链,如果登錄時服務(wù)器發(fā)現(xiàn)手機號還未注冊,會直接用這個手機號注冊好再進行登錄劲件,注冊過程對用戶是無感的掸哑,極大簡化了注冊流程。
缺點
這種登錄方式需要進行一系列的操作:輸入手機號零远、等待驗證碼短信苗分、輸入驗證碼、點擊登錄牵辣。這整個流程走完可能需要 20 秒以上摔癣,操作也比較繁瑣。并且它是依賴短信網(wǎng)絡(luò)的纬向,因為如果收不到短信择浊,也就登錄不了了。這些問題可能造成一部分用戶在注冊階段就流失了逾条。
從安全角度考慮琢岩,還存在驗證碼泄漏的風(fēng)險。如果有人知道了你的手機號师脂,并且竊取到了驗證碼担孔,那他也能登錄你的賬號了。
但回過頭來想一下吃警,為什么我們需要驗證碼糕篇?驗證碼的作用就是確定這個手機號是你的,那除了使用短信酌心,是否還有別的方式對手機號進行認證娩缰?
本機號碼認證
如果能獲取到當前使用的手機號,就能對用戶輸入的號碼進行驗證了谒府。但出于安全考慮拼坎,客戶端是無法直接獲取到手機號的,運營商則可以通過 sim 卡數(shù)據(jù)查詢到完疫。
現(xiàn)在運營商已經(jīng)開放了相關(guān)的能力泰鸡,現(xiàn)在我們可以在用戶輸入手機號后,通過調(diào)用運營商的接口壳鹤,判斷用戶輸入的手機號是否和本地號碼一致盛龄。這樣一來,用戶就省去了等待驗證碼短信芳誓、輸入驗證碼的過程余舶,也不受短信網(wǎng)絡(luò)的限制,簡化了登錄流程锹淌。
但再進一步想匿值,如果運營商可以把當前的號碼直接返回給我們,而不只是用于驗證赂摆,那用戶連手機號都不需要填了挟憔。
于是,就有了今天的主角一鍵登錄烟号。
一鍵登錄
獲取到當前手機使用的手機卡號绊谭,直接使用這個號碼進行登錄,這就是一鍵登錄汪拥。
這種登錄方式的好處是顯而易見的达传。它可以更方便、快捷地完成注冊迫筑、登錄流程宪赶,將原本可能需要 20 秒的流程,縮短到了 2 秒左右铣焊,很大程度上降低了登錄環(huán)節(jié)的用戶流失逊朽。
一鍵登錄能不能做,取決于運營商是否開放相關(guān)服務(wù)曲伊,這也是為什么過去沒有一鍵登錄叽讳,直到最近三大運營商都有了自己的開放平臺:
取號流程
要使用一鍵登錄,需要接入運營商的 SDK坟募,三大運營商使用了同一套授權(quán)流程:
主要步驟如下:
- SDK 初始化
調(diào)用 SDK 的初始化方法岛蚤,傳入項目在平臺上的 AppKey 和 AppSecret。
- 喚起授權(quán)頁
調(diào)用 SDK 喚起授權(quán)接口懈糯。SDK 會先向運營商發(fā)起獲取手機號掩碼的請求涤妒,請求成功后跳轉(zhuǎn)到授權(quán)頁。授權(quán)頁會顯示手機號掩碼以及運營商協(xié)議給用戶確認赚哗。
- 同意授權(quán)并登錄
用戶同意相關(guān)協(xié)議她紫,點擊授權(quán)頁面的登錄按鈕硅堆,SDK 會請求本次取號的 token,請求成功后將 token 返回給客戶端贿讹。
- 取號
將獲取到的 token 發(fā)送到我們自己的服務(wù)器渐逃,由服務(wù)器攜帶 token 調(diào)用運營商一鍵登錄的接口,調(diào)用成功就返回手機號碼了民褂。服務(wù)器用手機號進行登錄或注冊操作茄菊,返回操作結(jié)果給客戶端,完成一鍵登錄赊堪。
授權(quán)頁
這里需要把授權(quán)頁拎出來講一下面殖,它一般長這樣:
授權(quán)頁是 SDK 里定義的頁面,以安卓為例哭廉,接入 SDK 后我們需要在 AndroidManifest 里注冊好這個頁面脊僚。我們不能也不應(yīng)該跳過授權(quán)頁面,未經(jīng)用戶允許就獲取用戶手機號群叶。
由于授權(quán)頁是第三方的頁面吃挑,我們無法自由修改頁面樣式,但 SDK 里提供了足夠豐富的接口給我們自定義樣式街立。
前面說到舶衬,在授權(quán)頁顯示之前需要先請求到手機號掩碼,用于在授權(quán)頁展示赎离。為了增加授權(quán)頁的跳轉(zhuǎn)速度逛犹,減少用戶等待的時間,通常 SDK 會提供一個預(yù)取號的接口給我們梁剔,這個接口取的就是手機號掩碼虽画。我們可以在打開 APP 的時候就調(diào)用這個接口,在已經(jīng)取得掩碼的情況下荣病,用戶點擊跳轉(zhuǎn)授權(quán)頁面就不需要再等待了码撰。算是對用戶體驗的一個小優(yōu)化。
網(wǎng)絡(luò)
在認證過程中个盆,會把網(wǎng)絡(luò)切換為移動蜂窩網(wǎng)絡(luò)脖岛,目前支持的制式有中國移動 2G/3G/4G、中國聯(lián)通 3G/4G颊亮、中國電信 4G柴梆。當然最好是使用 4G,使用 2G终惑、3G 會降低認證的成功率绍在。
在沒有插電話卡,或者關(guān)閉移動蜂窩網(wǎng)絡(luò)的情況下,是無法完成認證的偿渡。所以就算接入了一鍵登錄臼寄,我們也要兼容傳統(tǒng)的登錄方式,允許用戶在認證失敗的情況下溜宽,手動輸入手機號登錄脯厨。
兼容三大運營商
三家運營商都擁有自己的 SDK,但各自的 SDK 不一定支持別家的認證坑质。這導(dǎo)致目前許多接入了一鍵登錄的產(chǎn)品,只支持某一個運營商临梗。
如果要兼容三大運營商涡扼,就需要分別接入三個 SDK。現(xiàn)在我們也有更簡單的方法盟庞,就是接入一個整合了三大運營商認證能力的第三方 SDK吃沪,目前主要有以下幾家:
原理和使用方法基本都是一樣的,具體大家可以查看它們的文檔什猖。
計費
講一下我們比較關(guān)心的價格問題票彪,我了解了運營商和上面提到那幾家的計價,認證一次的價格集中在 4 到 6 分錢不等不狮,其中最便宜的是 mob 的秒驗降铸。但價格可能會變化,這里就不具體討論了摇零。
一般是成功置換到手機號算一次計費推掸,調(diào)用預(yù)取號接口和認證失敗,都是不計費的驻仅。
總的來說谅畅,一鍵登錄和發(fā)送驗證短信的價格差不多。發(fā)送短信是發(fā)送一條就計費一次噪服,但用戶存在需要多次獲取驗證碼才能登錄成功的情況毡泻。而一鍵登錄能置換到手機號,基本就意味著登錄成功了粘优。所以從次數(shù)上考慮仇味,接入一鍵登錄應(yīng)該還能稍微省一點。
未來趨勢
目前敬飒,一鍵登錄處于剛起步的階段邪铲,運營商的認證服務(wù)還需要改進,對于用戶也還有一個被接受的過程无拗。
但毫無疑問带到,一鍵登錄將會成為未來的主流登陸方式之一。