——《云深知景年》

"

不知你是否发现:大批手机 app 登录页面,突然之间变成了一键登录。之前大火的 通过手机号码获取短信验证码 登录模式正悄悄退去。这神奇的操作是如何实现的呢?

1.背景

之前所有的登录页面千篇一律为「手机号」「验证码」(暂且忽略账号密码以及第三方登录模式),这是因为想要验证「你就是你」,在手机号实名认证的时代,通过向号主本人发送验证码来验证登录是较为稳妥的方式,事实证明也的确如此。但是受网络延迟以及操作繁琐等影响,对于用户留存以及用户新增有着不小的挑战。

也许你会想 APP 直接读取手机号验证号主身份不就好了嘛?对不起,如果哪家公司公开窃取手机号,离监狱就是负距离。这时三家通讯公司瞄准了这一市场,开放了相关能力,即通过调用运营商的接口,判断用户输入的手机号与本机号码是否一致。但细细一想,用户还是需要填写手机号,如果运营商直接把手机号返回给我们,那该多棒啊!这么一来「一键登录」就诞生了。

运营商是具备通过 sim 卡数据查询到手机号码的权限以及能力的。

刚才说到三家运营商开放了相关接口,但是他们毕竟是竞争关系,彼此之间互不兼容,而且提供的优惠以及方式也是不同的。好比移动出了一款4G套餐100分钟500M;联通出了同价位套餐200分钟10G;电信一看不行,出了不限流量。作为用户的我们肯定会根据自身情况选择最合适的,但是一般也是只选其一。不要说你办了三家的卡,而且为了同时使用甚至买了三个手机,如果你是如此土豪,请收下我的膝盖。因此,对于我们应用,集成三家通讯商的 SDK 是不是有点不那么方便以及划算呢?第三方平台便应运而生,比如某蓝(因为他们公司至少有3个推广添加了我的微信,所以我印象颇深)。

2.原理

作为技术人员,其实最关心的还是实现方式。结合网上各个平台的调用方式,绘制了此图:

android手机号码一键登录 手机号一键登录如何破_http

1) 用户打开 app 请求登录

2) 显示登录, app 通过内置的认证 SDK 向运营商获取手机号码

3) 获取成功时,为用户展示授权页面(就是是否一键登录)

4) 等待用户进行点击授权

5) 用户同意授权

6) SKD 得到授权之后,获取 token ,然后向 app 返回接口调用 token

7) app 向 app服务器 传递获取到的 token

8) app服务器 拿着客户端传过来的 token 请求 认证服务器 获取手机号码接口

9) 认证服务器 返回手机号码给应用服务器

10) 登录成功