18-登录功能功能架构设计四(本机号码一键登录)
xiangliheart
xiangliheart
发布于 2022-03-30 / 13 阅读 / 0 评论 / 0 点赞

18-登录功能功能架构设计四(本机号码一键登录)

本机号码一键登录注册设计

使用手机号加验证码的方式存在以下3个缺点。

(1)     注册登录流程长,在验证码录入正确的情况下需要10~30 秒,一旦录入错误就需要更长的时间。

(2)     可能由于用户黑名单、软件拦截、运营商黑名单、短信系统故障等导致用户无法收到短信验证码,从而造成用户在注册阶段流失。

(3)     需要花费短信通道费用,并且短信验证码的发送存在被攻击的风险。

为了规避以上问题,可以使用一键登录注册的设计方式。

1.一键登录注册的概念

手机号加验证码的方式主要是为了保证这个手机号是用户本人在使用,现在的手机号都已经实名制了,是否可以借助三大运营商的能力来验证用户身份,简化登录流程呢?

如图4-16所示,就是本机号码一键登录注册设计。出于安全考虑,客户端是不允许直接获取用户手机号的,但是运营商可以通过SIM卡数据获取到。获取到当前手机使用的手机号,直接使用这个号码进行登录,这就是一键登录。

图4-16 本机号码一键登录注册原型

这种登录的好处是更加方便、快捷,用户不需要输入手机号,也不需要获取并填写验证码,流程一般缩短到只需要2秒,极大地提升了用户体验,降低了登录注册环节的用户流失率。要想实现一键登录功能,必须依赖于运营商的开放服务,移动的互联网能力开放平台、电信的天翼账号开放平台、联通的WO+开放平台都提供了该功能。三大运营商都采用了类似的认证授权流程,并且提供了相应的SDK。

如果读者对SDK不了解,则可以先阅读以下基础知识内容。

SDK(Software Development Kit,软件开发工具包)代表的内容比较宽泛,一些软件、文档、示例的集合都可以称为SDK,SDK的目的是降低系统开发者的使用难度。

SDK是对实现细节进行封装,只暴露出一些方法或接口给集成方使用。在程序开发中所依赖的JAR包、函数库等都属于SDK的范畴。

目前腾讯、阿里巴巴、百度等企业提供基础服务或集成服务,都会提供各种SDK和辅助文档,是一种友好的系统集成形式。

2.一键登录注册流程

如图4-17所示,本机号码一键登录注册的整个过程可以分为4个阶段。

图4-17 本机号码一键登录注册流程

(1)     SDK初始化。

App想要使用运营商手机号认证功能,必须集成运营商提供的

SDK。用户打开App时,会调用 SDK 的初始化方法,需要传入运营商提供的AppKey和AppSecret进行认证,这一步其实就是环境的准备阶段。

(2)     唤起授权页面。

运营商认证SDK会向运营商认证服务器发起请求,获取掩码(掩码就是****遮挡的意思,如手机号掩码187****3052),目的是不泄露用户真实手机号。

获取掩码后运营商认证SDK会唤起授权页面,此授权页面为运营商提供,因此对接方无法进行任何修改,只能在运营商允许的范围内进行配置。例如,京东的一键登录页面,如图4-18所示,此页面并不是京东开发的,而是由中国移动开发的,京东只能在运营商认证SDK提供的接口中进行配置,完成自己的个性化展示。

(3)     同意授权获取Token。

用户点击“本机号码一键登录”按钮,代表同意将自己的手机号授权给App开发者使用,则运营商认证SDK发送请求到运营商认证服务器,获取授权访问Token,只有获取到Token才可以获得用户的完整手机号。

(4)     获取完整手机号,完成登录/注册。

图4-18 京东本机号码一键登录

App获取到Token,携带Token访问开发者服务端,开发者服务端再携带Token去访问运营商认证服务器,此时运营商认证服务器才会将完整的手机号返回给开发者服务端。开发者服务端获得完整手机号之

后,再完成登录/注册步骤(手机号存在则登录,不存在则注册)。

3.聚合服务解决方案三大运营商都有自己的号码认证服务和SDK,不仅开发方式存在一定差异,而且单独一家无法完整支持三家的号码认证,造成开发复杂化,对接成本提升。因此,就出现了第三方聚合服务。

第三方聚合服务整合了三大运营商的认证能力,如图4-19所示,开发者可以使用一个SDK来支持不同运营商的号码认证,从而统一了开发方式,降低了开发难度。目前,阿里云、网易易盾均提供了号码认证服务及MobTech的秒验等。

图4-19 号码认证服务

认证服务的计费方式为完成一次认证计费一次,与短信相同,价格也相差无几。但是,短信验证码存在发送多次的情况,所以理论上来讲,号码认证服务能够节约更多成本。

4.利用号码认证服务还能做什么?除用于用户注册和登录使用外,还可以在很多的安全场景使用号码认证服务。例如,验证用户录入的手机号是否为本机号码,可用于手机号绑定、支付确认、积分兑换等需要具备安全校验能力的业务场景,提供仅限本机操作的安全风控机制。


评论