前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >登陆最新实现方式--一键登录

登陆最新实现方式--一键登录

作者头像
php007
发布2019-09-03 17:55:26
12.7K0
发布2019-09-03 17:55:26
举报
文章被收录于专栏:PHP专享栏PHP专享栏

随着网络实名制的全面实施,服务方的实名认证压力越来越大,目前最简单的实名制实现方式便是绑定手机号码,使用手机号码进行认证。之所以采用手机号码认证呢,原因在于购入手机号码时必须进行实名制认证,而绑定手机号码就相当于间接实现实名制了。既然终究还是要使用手机号码,那干脆以手机号作为app登录账号不是直接么?因此,手机号码认证服务也随之逐渐成为认证方式中的主流。

  • 账号、密码登陆
    • 缺点
  • 手机号、验证码登陆
    • 缺点
  • 本机号码认证
    • 一键登录

我们先来看一下目前的一些登录方式:

账号、密码登陆

使用账号加密码是最传统的登录方式,可以说是简单粗暴的,一般也不会出现什么问题。

缺点

但这种方式要求用户要记住自己的账号和密码,也就是有一个记忆成本。用户为了降低记忆成本,很可能会在不同平台使用同一套账号密码。从安全角度考虑,一旦某个平台的账号密码泄露了,会连累到该用户使用的其他平台。

另外,由于账号和个人身份无关,意味着同一个用户可以注册多个不同的账号,也就是可能会有恶意注册的情况发生。

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

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

手机号、验证码登陆

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

使用手机号加验证码的登录方式目前已经成为主流,和输入账号密码相比,它可以更好的验证用户身份,可以防止恶意注册,用户不用再去记自己的账号密码,增加了安全性。现在用户也习惯并接受了这种登录方式。

现在很多产品还把登录和注册的流程进行了结合,如果登录时服务器发现手机号还未注册,会直接用这个手机号注册好再进行登录,注册过程对用户是无感的,极大简化了注册流程。

缺点

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

从安全角度考虑,还存在验证码泄漏的风险。如果有人知道了你的手机号,并且窃取到了验证码,那他也能登录你的账号了。

但回过头来想一下,为什么我们需要验证码?验证码的作用就是确定这个手机号是你的,那除了使用短信,是否还有别的方式对手机号进行认证?

本机号码认证

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

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

但再进一步想,如果运营商可以把当前的号码直接返回给我们,而不只是用于验证,那用户连手机号都不需要填了。

于是,就有了今天的主角一键登录。

一键登录

获取到当前手机使用的手机卡号,直接使用这个号码进行登录,这就是一键登录,这种“一键登录”的方式是依托电信运营商的移动据网络,采用“通信网关取号”及 SIM 卡识别等技术,无需等待验证码,一键点击,三秒即可登录。

  整个过程中不仅省去用户获取验证码,输入验证码的过程,甚至能让用户直接抛弃密码。而对于服务提供商而言,他们节省的不仅仅是发送短信费用,提升了用户体验,保障用户账户安全,由于登录过程的简化,还能提升访客注册/登录转化率。

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

一键登录能不能做,取决于运营商是否开放相关服务,这也是为什么过去没有一键登录,直到最近三大运营商都有了自己的开放平台:

  • 移动 - 互联网能力开放平台
  • 电信 - 天翼账号开放平台
  • 联通 - WO+ 开放平台

要使用一键登录,需要接入运营商的 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,目前主要有以下几家:

  • 阿里 - 号码认证服务
  • 极光 - 极光认证
  • mob - 秒验

原理和使用方法基本都是一样的,具体大家可以查看它们的文档。

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

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

总的来说,一键登录和发送验证短信的价格差不多。发送短信是发送一条就计费一次,但用户存在需要多次获取验证码才能登录成功的情况。而一键登录能置换到手机号,基本就意味着登录成功了。所以从次数上考虑,接入一键登录应该还能稍微省一点。

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

当然,最大的受益方肯定是用户了,很多用户在更换手机号码的时候,都会产生类型的顾虑,旧手机号码背后绑定的一系列服务怎么办?更换手机号码岂不是需要解绑,更换,再次绑定,尤其是对于那些注册了上百种服务的重度互联网用户而言,更是麻烦,而电信推出的一键登录则让这一切麻烦都能迎刃而解。

  如下图所示,界面上简化明了,一键点击免密登录,登录速度整体上提升25%,实际操作中用户仅需2秒就能完成登录了,在用户感知体验上大大提升。

总而言之,一键登录的方式既能减少许多身份校验带来的麻烦,提升用户账户的安全性,也能够为开发者在身份认证上提供更多样的选择,同时又能带来更高的便捷性、安全性。相信在不久的将来,它肯定会在身份认证领域发挥重要的作用,在后移动互联网时代用户身份认证领域里占据重要地位!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 风帆 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 账号、密码登陆
    • 缺点
    • 手机号、验证码登陆
      • 缺点
      • 本机号码认证
        • 一键登录
        相关产品与服务
        访问管理
        访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档