很多 APP 的目前都支持「本机号码一键登录」功能。本机号码一键登录是基于运营商独有网关认证能力推出的账号认证产品。用户只需一键授权,即可实现以本机号码注册/登录,相比先前的短信验证码流程体验更优。
目前市面上有很多厂商提供三网验证的服务,只不过是对三大运营商的包装。要了解具体的原理可直接看三大运营商相关的介绍。
中国移动中国移动号码认证服务支支持移动、联通、电信三网号码。主要产品功能:
一键登录:依托运营商的移动通信网络,采用通信网关取号技术,准确识别用户流量卡归属的手机号码。在获得用户授权后,App端(适配 iOS 和 Android )可使用本机号码实现一键免密登录。
本机号码校验:通过 SDK/JSSDK 提供的本机号码校验功能,调用网关鉴权方式,验证用户输入的手机号码或后台绑定的手机号码是否为本机流量卡归属号码,保证机卡不分离,用于快捷登入和安全风控等场景。本机号码校验现已适配 iOS、Android、H5、小程序、快应用。
获取手机号码(一键登录):
本机号码校验:
取号方法
通过调用安卓的 getPhoneInfo 或 iOS 的 getPhoneNumberCompletion,在用户无感知的情况下进行网络判断、蜂窝数据网络切换和网关取号等操作(以上操作均需消耗一定时间),返回取号是否成功的结果。
取号所需网络环境:运营商取号能力是通过数据网关实现,取号过程须在数据流量打开的情况下才能进行。因此,用户如果关闭数据流量将无法取号;若当前信号弱或者网络有干扰时,时延会高于平均值,取号成功率降低。
超时设置:SDK默认超时设置为8000ms,同时提供设置取号超的方法:安卓通过setOverTime设置,iOS通过setTimeoutInterval设置。
运营商判断:SDK提供判断用户当前网络状态和流量卡所属运营商的方法,通过调用安卓SDK的getNetworkType或iOS的networkInfo可获得以上信息,以便对不同用户选择不同的运营商的SDK进行取号或选择不同的登录方式。
关于取号缓存:应用取号或者授权成功后,SDK将取号的一个临时凭证缓存在本地,缓存能有效提高取号成功率、降低时延,并允许用户在未开启蜂窝网络时成功取号。SDK本身对缓存有处理逻辑,在某些场景下(如换卡)会让缓存提前失效,但若应用对安全性要求较高,也可以通过SDK提供的方法(安卓的delScrip和iOS的delectScrip)让缓存马上失效。
本机号码校验
通过调用安卓的mobileAuth或iOS的mobileAuthCompletion方法,可在不拉起授权页的情况下获得token。此时获得的token不能用于兑换用户的完整号码,只能用于校验本机号码与待校验号码的一致性。
预取号:安卓的getPhoneInfo或iOS的getPhoneNumberCompletion所形成取号缓存scrip同样适用于本机号码校验,可提前进行取号以提高后续获取token的效率。
适用场景:可在用户无感知的情况下校验本机号码与待校验号码的一致性,适用于所有基于手机号码进行风控的场景。
中国电信中国电信天翼账号开放平台提供了:免密登录、手机号码认证、二次卡校验等服务。目前只支持中国电信用户。
免密认证:天翼账号免密认证方案,依托运营商的移动数据网络,采用“通信网关预登录”及 SIM卡识别等技术,准确识别用户手机号码,实现一键登录,并可有效规避短信验证码泄露风险。