App一键登录服务端对接文档
一键登录流程
1) 客户端通过预取号接口获取 accessCode。
2) 客户端回传 accessCode 至服务端。
3) 服务端通过用户信息接口获取用户信息,并返回客户端。
1. 服务端接口
1.1 置换手机号接口
简要描述
直接用SDK预取号获取的 accessCode 换取用户信息
访问授权说明
IP 授权:是,服务端调用
请求URL
POST https://api.bitlib.cc/api/v1/auth/phone/info
Content-Type:application/json
请求参数示例:
{
"key":"c08eabb172cd4f61be07b7d361cf9fc7",
"token":"CFE861FA99844E87A67F86DA8F9693AE",
"platform":0,
"operator_type":"CM",
"auth_code":"9810",
"timestamp":"1627235775685",
"trace_id":"t41tFH5HTTPS9D292D981D11B651921B911A65ADD5FB",
"sign":"3b1bebfb233617a87ff3285ef930d21eab74a45bde8e53d2bf3fc60c8ba6f780be3c6e595408f51cbeeadd39dfac7d508628c094e81e8ca3b3f0b392b1e255aa9b5c5c6bbbf488797fc67aa9a873dd97e2de6e87ab1549ee5fef2b630e429560aaad3e368123ddb78fb872b610ba5b925b923bf71e500c63eb71e1715519ecf8"
}
请求参数说明:
参数名 | 必选 | 类型 | 是否参与签名 | 说明 |
---|---|---|---|---|
key | 是 | String | 是 | 应用 key |
token | 是 | String | 是 | SDK预取号获取到的 accessCode |
platform | 是 | Int | 否 | 系统平台,0:iOS 1:Android,如果无法确定可不传,但Android和iOS必须是两个应用! |
operator_type | 是 | String | 是 | SDK预取号获取的operatorType CU:联通,CT: 电信,CM:移动 |
auth_code | 是 | String | 否 | 透传SDK预取号返回的authCode,iOS及Android该参数必传 |
trace_id | 是 | String | 否 | 透传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": "",
"phone":"bc4c1aceed723941a8e480b898c53b4c"
}
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
code | int | 状态码,0:成功,其他状态码为失败 |
msg | string | 状态码描述信息 |
phone | string | 服务端采用业务端提供的公钥加密,业务端需要使用对应的私钥解密 |
1.2 校验手机号接口
简要描述
直接用SDK预取号获取的 accessCode + 手机号,验证手机号与当前流量卡的手机号是否一致
访问授权说明
IP 授权:是,服务端调用
请求URL POST https://api.bitlib.cc/api/v1/auth/phone/verify
Content-Type:application/json
请求参数示例:
{
"key":"c08eabb172cd4f61be07b7d361cf9fc7",
"token":"CFE861FA99844E87A67F86DA8F9693AE",
"platform":0,
"operator_type":"CM",
"auth_code":"9810",
"mobile_verify":"13900001234",
"timestamp":"1627235775685",
"trace_id":"t41tFH5HTTPS9D292D981D11B651921B911A65ADD5FB",
"sign":"3b1bebfb233617a87ff3285ef930d21eab74a45bde8e53d2bf3fc60c8ba6f780be3c6e595408f51cbeeadd39dfac7d508628c094e81e8ca3b3f0b392b1e255aa9b5c5c6bbbf488797fc67aa9a873dd97e2de6e87ab1549ee5fef2b630e429560aaad3e368123ddb78fb872b610ba5b925b923bf71e500c63eb71e1715519ecf8"
}
请求参数说明:
参数名 | 必选 | 类型 | 是否参与签名 | 说明 |
---|---|---|---|---|
key | 是 | String | 是 | 应用 key |
token | 是 | String | 是 | SDK预取号获取到的 accessCode |
platform | 是 | Int | 否 | 系统平台,0:iOS 1:Android,如果无法确定可不传,但Android和iOS必须是两个应用! |
operator_type | 是 | String | 是 | SDK预取号获取的operatorType CU:联通,CT: 电信,CM:移动 |
auth_code | 是 | String | 否 | 透传SDK预取号返回的authCode,iOS及Android该参数必传 |
trace_id | 是 | String | 否 | 透传SDK预取号获取的traceId |
mobile_verify | 是 | String | 否 | 待校验的手机号 |
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:无法判断 |
2. 状态码说明
状态码 | 说明 | 原因 |
---|---|---|
-1 | 系统异常 | 未处理的异常信息,通常不会发生 |
-2 | 处理失败 | 失败原因请参见msg说明 |
-3 | 参数无效 | 无效的参数请参见msg说明 |
-4 | 余额不足 | 需要充值 |
100007 | 应用无效 | 检查应用Key是否正确 |
100008 | 一键登录权限未开通 | 联系运营人员开通 |
100009 | 号码认证权限未开通 | 联系运营人员开通 |
100010 | 参数为空 | 缺少必要参数,请参见msg说明 |
100021 | 服务端请求参数验签失败 | 签名工具参考下方的签名工具包 |
100022 | ip白名单校验失败 | 检查返回的IP是否已配置到Dashboard中 |
100028 | 无法确定运营商 | 检查channel字段是否正确上报 |
200010 | token校验错误 | 非运营商返回的token |
200011 | 验签失败 | 运营商侧验签失败,需要联系运营人员 |
200012 | token已失效 | token有效期,移动:2分钟,联通:30分钟,电信:60分钟 |
200013 | 未获取到数据 | token已被使用 |
200014 | 运营商key不一致 | 获取token的key与置换使用的key不一致 |
200020 | 未定义异常 | 需查看具体的msg信息 |
3. 相关工具
公私钥生成及RSA工具类请参考开发工具包中的: RSA帮助文档