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
<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. 常见问题
是否支持wifi环境下使用?
答:仅支持数据流量下使用,不支持wifi、热点环境下使用。请提醒用户请勿在wifi环境下使用。用户处于蜂窝数据网络为什么获取token失败?
答:①检查设备是否链接了VPN网络,VPN环境下可能会导致获取token失败;②网络环境差可能会导致取号请求超时。返回“referer校验失败”是什么原因?
答:请检查使用的referer与报备的集成页面地址不完全一致,请使用报备的referer或联系运营同事更换报备地址。token校验接口返回“验证签名失败”是什么原因?
答:①使用的公钥与报备内容是否一致;②建议使用RSA工具类生成签名。token校验接口返回“userInfomation 校验失败”是什么原因?
答:请检查 token 校验接口使用的 userInfomation 与 js sdk 返回是否完全一致。由于token 校验接口的 userInfomation 是业务方前端传给业务方后端的,可能由于该字段作为 url parameter,服务端收到后可能会解码导致出错。请业务方收到userinfomation不要解码(案例:js sdk 返回的 userInfomation 中部分“%3d”,经服务端解码后变成了“=”)。token校验接口返回“token不存在”、“token失效”是什么原因?
答:可能为token失效,token有效期1分钟。
8. 相关工具
公私钥生成及RSA工具类请参考开发工具包中的: RSA帮助文档