一键登陆了解一下?

登陆方式

咱们先来看一下目前的一些登陆方式。html

帐号 + 密码

使用帐号加密码是最传统的登陆方式,能够说是简单粗暴的,通常也不会出现什么问题。安全

缺点

但这种方式要求用户要记住本身的帐号和密码,也就是有一个记忆成本。用户为了下降记忆成本,极可能会在不一样平台使用同一套帐号密码。从安全角度考虑,一旦某个平台的帐号密码泄露了,会连累到该用户使用的其余平台。服务器

另外,因为帐号和我的身份无关,意味着同一个用户能够注册多个不一样的帐号,也就是可能会有恶意注册的状况发生。网络

为解决这两个问题,理想的状况就是使用一个和用户身份强关联的东西来做为帐号。但用什么呢?总不能拿身份证作帐号吧。ide

这个问题一直没有一个好的回答,直到手机卡强制实名制。优化

手机号 + 验证码

从手机卡实名制开始,手机号已经成为咱们的另外一个身份证实。加密

使用手机号加验证码的登陆方式目前已经成为主流,和输入帐号密码相比,它能够更好的验证用户身份,能够防止恶意注册,用户不用再去记本身的帐号密码,增长了安全性。如今用户也习惯并接受了这种登陆方式。3d

如今不少产品还把登陆和注册的流程进行告终合,若是登陆时服务器发现手机号还未注册,会直接用这个手机号注册好再进行登陆,注册过程对用户是无感的,极大简化了注册流程。cdn

缺点

这种登陆方式须要进行一系列的操做:输入手机号、等待验证码短信、输入验证码、点击登陆。这整个流程走完可能须要 20 秒以上,操做也比较繁琐。而且它是依赖短信网络的,由于若是收不到短信,也就登陆不了了。这些问题可能形成一部分用户在注册阶段就流失了。htm

从安全角度考虑,还存在验证码泄漏的风险。若是有人知道了你的手机号,而且窃取到了验证码,那他也能登陆你的帐号了。

但回过头来想一下,为何咱们须要验证码?验证码的做用就是肯定这个手机号是你的,那除了使用短信,是否还有别的方式对手机号进行认证?

本机号码认证

若是能获取到当前使用的手机号,就能对用户输入的号码进行验证了。但出于安全考虑,客户端是没法直接获取到手机号的,运营商则能够经过 sim 卡数据查询到。

如今运营商已经开放了相关的能力,如今咱们能够在用户输入手机号后,经过调用运营商的接口,判断用户输入的手机号是否和本地号码一致。这样一来,用户就省去了等待验证码短信、输入验证码的过程,也不受短信网络的限制,简化了登陆流程。

但再进一步想,若是运营商能够把当前的号码直接返回给咱们,而不仅是用于验证,那用户连手机号都不须要填了。

因而,就有了今天的主角一键登陆。

一键登陆

获取到当前手机使用的手机卡号,直接使用这个号码进行登陆,这就是一键登陆。

这种登陆方式的好处是显而易见的。它能够更方便、快捷地完成注册、登陆流程,将本来可能须要 20 秒的流程,缩短到了 2 秒左右,很大程度上下降了登陆环节的用户流失。

一键登陆能不能作,取决于运营商是否开放相关服务,这也是为何过去没有一键登陆,直到最近三大运营商都有了本身的开放平台:

取号流程

要使用一键登陆,须要接入运营商的 SDK,三大运营商使用了同一套受权流程:

主要步骤以下:

  1. SDK 初始化

调用 SDK 的初始化方法,传入项目在平台上的 AppKey 和 AppSecret。

  1. 唤起受权页

调用 SDK 唤起受权接口。SDK 会先向运营商发起获取手机号掩码的请求,请求成功后跳转到受权页。受权页会显示手机号掩码以及运营商协议给用户确认。

  1. 赞成受权并登陆

用户赞成相关协议,点击受权页面的登陆按钮,SDK 会请求本次取号的 token,请求成功后将 token 返回给客户端。

  1. 取号

将获取到的 token 发送到咱们本身的服务器,由服务器携带 token 调用运营商一键登陆的接口,调用成功就返回手机号码了。服务器用手机号进行登陆或注册操做,返回操做结果给客户端,完成一键登陆。

受权页

这里须要把受权页拎出来说一下,它通常长这样:

受权页

受权页是 SDK 里定义的页面,以安卓为例,接入 SDK 后咱们须要在 AndroidManifest 里注册好这个页面。咱们不能也不该该跳过受权页面,未经用户容许就获取用户手机号。

因为受权页是第三方的页面,咱们没法自由修改页面样式,但 SDK 里提供了足够丰富的接口给咱们自定义样式。

前面说到,在受权页显示以前须要先请求到手机号掩码,用于在受权页展现。为了增长受权页的跳转速度,减小用户等待的时间,一般 SDK 会提供一个预取号的接口给咱们,这个接口取的就是手机号掩码。咱们能够在打开 APP 的时候就调用这个接口,在已经取得掩码的状况下,用户点击跳转受权页面就不须要再等待了。算是对用户体验的一个小优化。

网络

在认证过程当中,会把网络切换为移动蜂窝网络,目前支持的制式有中国移动 2G/3G/4G、中国联通 3G/4G、中国电信 4G。固然最好是使用 4G,使用 2G、3G 会下降认证的成功率。

在没有插电话卡,或者关闭移动蜂窝网络的状况下,是没法完成认证的。因此就算接入了一键登陆,咱们也要兼容传统的登陆方式,容许用户在认证失败的状况下,手动输入手机号登陆。

兼容三大运营商

三家运营商都拥有本身的 SDK,但各自的 SDK 不必定支持别家的认证。这致使目前许多接入了一键登陆的产品,只支持某一个运营商。

若是要兼容三大运营商,就须要分别接入三个 SDK。如今咱们也有更简单的方法,就是接入一个整合了三大运营商认证能力的第三方 SDK,目前主要有如下几家:

原理和使用方法基本都是同样的,具体你们能够查看它们的文档。

计费

讲一下咱们比较关心的价格问题,我了解了运营商和上面提到那几家的计价,认证一次的价格集中在 4 到 6 分钱不等,其中最便宜的是 mob 的秒验。但价格可能会变化,这里就不具体讨论了。

通常是成功置换到手机号算一次计费,调用预取号接口和认证失败,都是不计费的。

总的来讲,一键登陆和发送验证短信的价格差很少。发送短信是发送一条就计费一次,但用户存在须要屡次获取验证码才能登陆成功的状况。而一键登陆能置换到手机号,基本就意味着登陆成功了。因此从次数上考虑,接入一键登陆应该还能稍微省一点。

将来趋势

目前,一键登陆处于刚起步的阶段,运营商的认证服务还须要改进,对于用户也还有一个被接受的过程。

但毫无疑问,一键登陆将会成为将来的主流登录方式之一。

相关文章
相关标签/搜索