一起来看看火爆的手机号码一键登录

"也许,时光的洪流中,你一直以来不屑一顾的、冷眼看待的世故与冷酷,才是这世间所有人原本的模样。
——《云深知景年》"
不知你是否发现:大批手机 app
登录页面,突然之间变成了一键登录。之前大火的 通过手机号码获取短信验证码
登录模式正悄悄退去。这神奇的操作是如何实现的呢?
1.背景
之前所有的登录页面千篇一律为「手机号」「验证码」(暂且忽略账号密码以及第三方登录模式),这是因为想要验证「你就是你」,在手机号实名认证的时代,通过向号主本人发送验证码来验证登录是较为稳妥的方式,事实证明也的确如此。但是受网络延迟以及操作繁琐等影响,对于用户留存以及用户新增有着不小的挑战。
也许你会想 APP
直接读取手机号验证号主身份不就好了嘛?对不起,如果哪家公司公开窃取手机号,离监狱就是负距离。这时三家通讯公司瞄准了这一市场,开放了相关能力,即通过调用运营商的接口,判断用户输入的手机号与本机号码是否一致。但细细一想,用户还是需要填写手机号,如果运营商直接把手机号返回给我们,那该多棒啊!这么一来「一键登录」就诞生了。
运营商是具备通过
sim
卡数据查询到手机号码的权限以及能力的。
刚才说到三家运营商开放了相关接口,但是他们毕竟是竞争关系,彼此之间互不兼容,而且提供的优惠以及方式也是不同的。好比移动出了一款4G套餐100分钟500M;联通出了同价位套餐200分钟10G;电信一看不行,出了不限流量。作为用户的我们肯定会根据自身情况选择最合适的,但是一般也是只选其一。不要说你办了三家的卡,而且为了同时使用甚至买了三个手机,如果你是如此土豪,请收下我的膝盖。因此,对于我们应用,集成三家通讯商的 SDK
是不是有点不那么方便以及划算呢?第三方平台便应运而生,比如某蓝(因为他们公司至少有3个推广添加了我的微信,所以我印象颇深)。
2.原理
作为技术人员,其实最关心的还是实现方式。结合网上各个平台的调用方式,绘制了此图:

1) 用户打开 app
请求登录
2) 显示登录, app
通过内置的认证 SDK
向运营商获取手机号码
3) 获取成功时,为用户展示授权页面(就是是否一键登录)
4) 等待用户进行点击授权
5) 用户同意授权
6) SKD
得到授权之后,获取 token
,然后向 app
返回接口调用 token
7) app
向 app服务器
传递获取到的 token
8) app服务器
拿着客户端传过来的 token
请求 认证服务器
获取手机号码接口
9) 认证服务器
返回手机号码给应用服务器
10) 登录成功
3.后话
虽然一键登录比短信验证码收取的费用便宜不了多少,但是其节省的时间以及简化的操作不止一点半点。对于注册时,更是省时省力,拉新超赞。
对了,还有一点你需要知道,那就是这一操作必须建立在拥有顺畅的网络基础之上。
三大运营商提供的接口操作对网络要求各不相同,但都不支持
WiFi
无线网络,最好是4G
+