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/universal.verify.min.js>'></script>
⚠️请勿将JS文件下载至本地
最新版本请查看版本更新日志:最新版
3. 初始化 JS SDK 并获取 token
<script>
new Verify({ appKey: '填写你的Key'}).init().then(res => {
// accessCode
// resultCode
// msg
// operatorType
}).catch(error => {
// 出错,请使用其他方式(如短信验证码)
});
</script>
返回示例
{
"accessCode":"ce8cebfd12c7c0a857c0ea4c8840e6b8",
"operatorType": "CM",
"resultCode": "0",
"msg": "调用成功"
}
返回参数说明
参数名 | 类型 | 说明 | 是否必传 |
---|---|---|---|
resultCode | int | 状态码,0:成功,其他状态码为失败 | 否 |
msg | string | 状态码描述信息 | 否 |
accessCode | string | 透传给服务端用于校验用户输入的号码是否为本机号码 | 是 |
operatorType | string | CM / CU / CT,分别表示中国移动,中国联通,中国电信 | 是 |
4. 授权说明(隐私协议中添加)
隐私协议
中国移动条款名称 《中国移动认证服务条款》
地址: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
5. 校验手机号接口(服务端调用)
简要描述
直接用预取号获取的 accessCode 验证用户号码
访问授权说明 IP 授权:是,服务端调用
请求URL
POST https://api.bitlib.cc/api/v1/auth/verify
Content-Type:application/json
请求参数示例:
{
"key":"813994709***412f2e7390143e230851",
"code":"0",
"token":"419e6da***91411297ec609184792a52",
"operator_type":"CU",
"msg":"调用成功",
"mobile_verify":"13900001234",
"timestamp":"16151***70076",
"sign":"3b1bebfb2336***87ff3285ef930d21eab74a45bde8e53d2bf3fc60c8ba6f780be3c6e595408f51cbeeadd39dfac7d508628c094e81e8ca3b3f0b392b1e255aa9b5c5c6bbbf488797fc67aa9a873dd97e2de6e87ab1549ee5fef2b630e429560aaad3e368123ddb78fb872b610ba5b925b923bf71e500c63eb71e1715519ecf8"
}
请求参数说明:
参数名 | 必选 | 类型 | 是否参与签名 | 说明 |
---|---|---|---|---|
key | 是 | String | 是 | 应用 key |
code | 是 | String | 否 | 接口 precheck 返回值 |
token | 是 | String | 是 | 接口 precheck获取到的 accessCode (code=0 时必填) |
operator_type | 是 | String | 是 | 接口 precheck 返回值,SDK 侧 接口获取,CU:联通,CT: 电信,CM:移动(code=0 时必填) |
mobile | 是 | String | 是 | 接口 precheck 返回值,脱敏手机号,未返回时填000**0000 |
msg | 是 | String | 否 | 接口 precheck 返回值 |
mobile_verify | 是 | String | 否 | 待校验的手机号 |
timestamp | 是 | String | 是 | 时间戳 |
sign | 是 | String | \ | 参数RSA加密值,加密算法:sign=RSA(key=值\&mobile=值\&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. 常见问题
是否支持wifi环境下使用?
答:仅支持数据流量下使用,不支持wifi、热点环境下使用。请提醒用户请勿在wifi环境下使用。用户处于蜂窝数据网络为什么获取token失败?
答:①检查设备是否链接了VPN网络,VPN环境下可能会导致获取token失败;②网络环境差可能会导致取号请求超时。返回“referer校验失败”是什么原因?
答:请检查使用的referer与报备的集成页面地址不完全一致,请使用报备的referer或联系运营同事更换报备地址。token校验接口返回“验证签名失败”是什么原因?
答:①使用的公钥与报备内容是否一致;②建议使用RSA工具类生成签名。token校验接口返回“token不存在”、“token失效”是什么原因?
答:可能为token失效。
7.相关工具
公私钥生成及RSA工具类请参考开发工具包中的: RSA帮助文档