H5/小程序/快应用
一键登录流程
1) 客户端通过预取号接口获取 accessCode;
2) 客户端回传 accessCode 至服务端;
3) 服务端通过用户信息接口获取用户信息,并返回客户端。
温馨提示
文档中所有接口均在服务端调用,校验IP白名单及签名校验。
1. 预取号接口
简要描述
该方法用于获取 accessCode, accessCode 将用于号码认证接口
访问授权说明 IP 授权:否, SDK 客户端封装使用,接受请求重定向
请求URL
POST http://***/api/v1/*** (具体请求地址咨询商务经理)
Content-Type:application/json
请求参数示例
{
"key":"813994709c7****e7390143e230851",
"platform":1,
"timestamp":"161512***70076",
"packname":"cn.bitlib.demo",
"packsign":"dbc58e3e9d***79ad91f294acc3551e3",
"format":"json",
"sign":"3b1bebfb2336***3285ef930d21eab74a45bde8e53d2bf3fc60c8ba6f780be3c6e595408f51cbeeadd39dfac7d508628c094e81e8ca3b3f0b392b1e255aa9b5c5c6bbbf488797fc67aa9a873dd97e2de6e87ab1549ee5fef2b630e429560aaad3e368123ddb78fb872b610ba5b925b923bf71e500c63eb71e1715519ecf8"
}
请求参数说明
该接口如果请求成功会先返回302重定向,从Header中获取Location用于重定向请求,重定向的请求才会返回如下结果。 该接口如果请求失败则会返回相应的状态码及错误信息。
参数名 | 必选 | 类型 | 是否参与签名 | 说明 |
key | 是 | String | 是 | 应用 key |
keyplatform | 是 | Integer | 是 | iOS(0)Android(1)根据客户端类型传相应的参数 |
bundleid | 否 | String | 否 | 平台 Bundle ID 必填,如果是H5,可不传该参数 |
packname | 否 | String | 否 | Android 平台 apk 包名必填,如果是H5,可不传该参数 |
packsign | 否 | String | 否 | Android平台 apk 签名必填,如果是H5,可不传该参数 |
format | 否 | String | 否 | 预取号返回结果类型,默认返回jsonp格式,如需返回json,请传值“json” |
callback | 否 | String | 否 | format参数如果不为json,则返回默认的jsonp请求,用于解决H5跨域请求问题,此时callback的默认返回值为reply,可通该参数自定义callback名称。format参数如果为json,则该参数始终返回空字符串。 |
timestamp | 是 | String | 是 | 时间戳 |
sign | 是 | String | / | 参数RSA加密值,加密算法:sign=RSA(key=值\&platform=值& timestamp=值,RSA_Private_key) 转16进制大写,签名算法为:SHA256withRSA。需要注意参数拼接 key升序排序,密钥格式为PSKCS#8,1024位(bit)。其中 RSA_Private_key是合作方的RSA 私钥,合作方需要向平台提供RSA 公钥,用于访问接口时的验签、 |
该接口如果请求成功会先返回302重定向,从Header中获取Location用于重定向请求,重定向的请求才会返回如下结果。 该接口如果请求失败则会返回相应的状态码及错误信息。
返回示例 成功:
{
"code":"0",
"msg:"",
"accessCode":"419e6dacb191411297ec609184792a52",
"operatorType":"CM",
"mobile":"139****1234"
}
失败:
{
"code":"-2",
"msg:"错误信息"
}
返回参数说明
参数名 | 类型 | 说明 |
code | int | 状态码,0:成功,其他状态码为失败 |
msg | string | 返回状态描述,code 不为 0 对应错误描述 |
accessCode | string | 授权码,成功时返回,用于号码认证 |
operatorType | string | 运营商标识,成功时返回,用于号码认 证, CU 代表联通,CT 代表电信,CM 代表移动 |
mobile | string | 脱敏手机号 139_****_1234 |
msgId | string | 随机表示,code 不为 0 对应错误描述 |
2. 置换手机号接口
简要描述
直接用预取号获取的 accessCode 换取用户信息
访问授权说明 IP 授权:是,服务端调用
请求URL
POST http://***/api/v1/*** (具体请求地址咨询商务经理)
Content-Type:application/json
请求参数示例:
{
"key":"813994709c7***2f2e7390143e230851",
"code":"0",
"token":"419e6dacb1914***97ec609184792a52",
"operator_type":"CM",
"mobile":"139****1234",
"msg":"调用成功",
"msg_id":"",
"timestamp":"1615***070076",
"sign":"3b1bebfb233617a***f3285ef930d21eab74a45bde8e53d2bf3fc60c8ba6f780be3c6e595408f51cbeeadd39dfac7d508628c094e81e8ca3b3f0b392b1e255aa9b5c5c6bbbf488797fc67aa9a873dd97e2de6e87ab1549ee5fef2b630e429560aaad3e368123ddb78fb872b610ba5b925b923bf71e500c63eb71e1715519ecf8"
}
请求参数说明:
参数名 | 必选 | 类型 | 是否参与签名 | 说明 |
key | 是 | String | 是 | 应用 key |
code | 是 | String | 否 | 接口 precheck 返回值 |
token | 是 | String | 是 | precheck获取到的 accessCode (code=0 时必填) |
mobile | 是 | String | 是 | 接口 precheck 返回值,脱敏手机号(code=0时必填) |
msg | 是 | String | 否 | 接口 precheck 返回值 |
msg_id | 是 | String | 否 | 接口 precheck 返回值,或标识请求随机数 |
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": "",
"phone":"bc4c1aceed723941a8e480b898c53b4c"
}
返回参数说明
参数名 | 类型 | 说明 |
code | int | 状态码,0:成功,其他状态码为失败 |
msg | string | 状态码描述信息 |
phone | string | 服务端采用业务端提供的公钥加密,业务端需要使用私钥解密 |
3. 校验手机号接口
简要描述
直接用预取号获取的 accessCode 验证用户号码
访问授权说明 IP 授权:是,服务端调用
请求URL
POST http://***/api/v1/auth/verify (具体请求地址咨询商务经理)
Content-Type:application/json
请求参数示例:
{
"key":"813994709***412f2e7390143e230851",
"code":"0",
"token":"419e6da***91411297ec609184792a52",
"operator_type":"CU",
"mobile":"139****1234",
"msg":"调用成功",
"msg_id":"",
"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 返回值,脱敏手机号(code=0时必填) |
msg | 是 | String | 否 | 接口 precheck 返回值 |
msg_id | 是 | String | 否 | 接口 precheck 返回值,或标识请求随机数 |
mobile_verify | 是 | String | 否 | 待校验的手机号 |
timestamp | 是 | String | 是 | 时间戳 |
sifn | 是 | 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:无法判断 |
4.相关工具
4.1公私钥生成
公私钥在线生成 公私钥对生成说明:
4.2 RSA工具类
签名工具包,提供Java、PHP、Node、C#的私钥生成签名及私钥解密方法。 签名工具包