H5 快捷登录

1. H5快捷登录流程

1.1 流程说明

1)业务方 h5 集成取号 js sdk;
2)js sdk 向认证服务端发起取号请求,取号成功后认证服务端返回临时凭证、手机号掩码等;
3)用户授权并补齐正确的手机号码,授权页面发起请求获取token,认证服务端返回token并返回业务方页面;
4)业务方服务端发起token校验请求,认证服务端校验通过后返回输入的手机号是否是本机号;

1.2 概览

1.3 流程图

2. 引入JS

简要描述

<!-- H5快捷登录 -->
<script src="https://static.bitlib.cc/h5/verify-quick.min.js"></script>

⚠️请勿将JS文件下载至本地

最新版本请查看版本更新日志:最新版

3. 初始化 JS SDK 并获取 token

获取appKey

<script>
    new QuickLoginManager({ appKey: '填写你的Key'}).init().then(res => {
      //resultCode 
      //msg 
      //accessCode 
      //mobile 
      //userInformation
      //operatorType
      //traceID
    }).catch(error => {
      // 出错,请使用其他方式
    });
</script>

返回示例

{
    "accessCode": "VMHTTPS0893BC46B1FC9B***47029334DA9EC5B",
    "mobile": "138****6666",
    "userInformation": "TWFjSW50ZWxAQE1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwXzE1XzcpI***cGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS85Ni4wLjQ2NjQuNTUgU2FmYXJpLzUzNy4zNkBAM2UwMmQyZDYzMGUxZDIxZmY2OWEzODkyYjA3MDRiZjk%3D",
    "operatorType": "CM",
    "traceID": "980D8A599BC***8081D8457AB60EF9AD&",
    "msg": "成功",
    "resultCode": 0
}

返回参数说明

参数名 类型 说明 是否必传
resultCode int 状态码,0:成功,其他状态码为失败
msg string 状态码描述信息
accessCode string 透传给服务端用于校验用户输入的号码是否为本机号码
operatorType string CM / CU / CT,分别表示中国移动,中国联通,中国电信
mobile string 脱敏手机号
userInformation string 用户信息:仅移动返回该字段
traceID string 追踪ID

4. H5快捷登录接口(服务端调用)

简要描述

使用 JS SDK 预取号获取的 accessCode 及用户输入的手机号校验是否为本机号。

访问授权说明

IP 授权:是,服务端调用

请求URL

POST https://api.bitlib.cc/api/v1/auth/phone/verify

Content-Type:application/json

请求参数示例:

{
    "key":"9cbcac911c20ca1ab657213fb5a90e85",
    "token":"VMHTTPS4681475389749AA210B87BAB2E6CB14C",
    "platform":3,
    "operator_type":"CM",
    "trace_id":"54278C6921844A788F188371FC68109C&eyJ3Y2lkIjoiMTAwMTE2MTY0MDkyODg1NTU2MjY1NTAifQ==",
    "user_information":"TGludXggYWFyY2g2NEBATW96aWxsYS81LjAgKExpbnV4OyBVOyBBbmRyb2lkIDEwOyB6aC1jbjsgTUkgOCBCdWlsZC9RS1ExLjE5MDgyOC4wMDIpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS84OS4wLjQzODkuMTE2IE1vYmlsZSBTYWZhcmkvNTM3LjM2IFhpYW9NaS9NaXVpQnJvd3Nlci8xNS41LjEyQEAyOWEyOGI5OWY2NjczNWQzNDI0MzRhN2Y5N2U2ODU4Nw%3D%3D",
    "mobile_verify":"15100001234",
    "timestamp":"1627235775685",
    "sign":"3b1bebfb233617a87ff3285ef930d21eab74a45bde8e53d2bf3fc60c8ba6f780be3c6e595408f51cbeeadd39dfac7d508628c094e81e8ca3b3f0b392b1e255aa9b5c5c6bbbf488797fc67aa9a873dd97e2de6e87ab1549ee5fef2b630e429560aaad3e368123ddb78fb872b610ba5b925b923bf71e500c63eb71e1715519ecf8"
}

请求参数说明:

参数名 必选 类型 是否参与签名 说明
key String 应用 key
token String JS SDK预取号获取到的 accessCode
platform Int 3:H5
operator_type String

JS SDK预取号获取的operatorType

CU:联通,CT: 电信,CM:移动

user_information String 透传 JS SDK 预取号返回的userInformation,中国移动该参数必传,中国联通及中国电信该参数为空
mobile_verify String 待校验的手机号
trace_id String 透传 JS SDK 预取号获取的traceId
timestamp String 时间戳
sign String / 参数RSA加密值,加密算法:sign=RSA(key=值\&operator_type=值& timestamp=值\&token=值,RSA_Private_key) 转16进制大写,签名算法为:SHA256withRSA。需要注意参数拼接 key升序排序,密钥格式为PSKCS#8,1024位(bit)。其中 RSA_Private_key是合作方的RSA 私钥,合作方需要向平台提供RSA 公钥,用于访问接口时的验签

返回示例

{
    "code": 0,
    "msg": "",
    "verify":"bc4c1aceed723941a8e480b898c53b4c"
}

返回参数说明

参数名 类型 说明
code int 状态码,0:成功,其他状态码为失败
msg string 状态码描述信息
verify string 服务端采用业务端提供的公钥加密,业务端需要使用私钥解密,解密结果值: 0:一致;1:不一致;2:无法判断

6. 授权页面规范

标准版的授权页面如下:

注意

1、开发者不得通过任何技术手段,破解授权页,或将授权页面的隐私栏、品牌露出内容隐藏、覆盖。

2、登录按钮文字描述必须包含“登录”或“注册”等文字,不得诱导用户授权。

3、对于接入认证SDK并上线的应用,运营商会对上线的应用授权页面做审查,如果有出现未按要求弹出或设计 授权页面的,将关闭应用的认证取号服务。

隐私协议

中国移动条款名称 《中国移动认证服务条款》

地址:https://wap.cmpassport.com/resources/html/contract.html

中国联通条款名称:《联通统一认证服务条款》

地址:https://opencloud.wostore.cn/authz/resource/html/disclaimer.html?fromsdk=true

中国电信条款名称:《天翼账号服务与隐私协议》

地址:https://e.189.cn/sdk/agreement/detail.do?hidetop=true

7. 常见问题

  1. 是否支持wifi环境下使用?
    答:仅支持数据流量下使用,不支持wifi、热点环境下使用。请提醒用户请勿在wifi环境下使用。

  2. 用户处于蜂窝数据网络为什么获取token失败?
    答:①检查设备是否链接了VPN网络,VPN环境下可能会导致获取token失败;②网络环境差可能会导致取号请求超时。

  3. 返回“referer校验失败”是什么原因?
    答:请检查使用的referer与报备的集成页面地址不完全一致,请使用报备的referer或联系运营同事更换报备地址。

  4. token校验接口返回“验证签名失败”是什么原因?
    答:①使用的公钥与报备内容是否一致;②建议使用RSA工具类生成签名。

  5. token校验接口返回“userInfomation 校验失败”是什么原因?
    答:请检查 token 校验接口使用的 userInfomation 与 js sdk 返回是否完全一致。由于token 校验接口的 userInfomation 是业务方前端传给业务方后端的,可能由于该字段作为 url parameter,服务端收到后可能会解码导致出错。请业务方收到userinfomation不要解码(案例:js sdk 返回的 userInfomation 中部分“%3d”,经服务端解码后变成了“=”)。

  6. token校验接口返回“token不存在”、“token失效”是什么原因?
    答:可能为token失效,token有效期1分钟。

8. 相关工具

公私钥生成及RSA工具类请参考开发工具包中的: RSA帮助文档

扫码体验

results matching ""

    No results matching ""