性能阐明
- 提交客户端获取到的token、opToken等数据,验证后返回手机号码
调用地址
- POST http://identify.verify.mob.com/auth/auth/sdkClientFreeLogin
申请头
- Content-Type :application/json
入参阐明
字段
类型
阐明
必传
appkey
String
app标识
Y
token
String
客户端的token
Y
opToken
String
客户端返回的运营商token
Y
operator
String
客户端返回的运营商,CMCC:中国移动通信, CUCC:中国联通通信, CTCC:中国电信
Y
sign
String
签名(MD5(所有参数应用key的正序,通过a=b&b=c+appSecret组成))
Y
timestamp
long
以后工夫戳(毫秒)
Y
md5
String
APK的md5签名,例:e4caa1a08ba0570b5c1290b1a0bc9252
N
加密示例
- 参数
"appkey" -> "2f2d7j9wf8a40""opToken" -> "f630dwff2f8f209c60a6449cf971ad50b3e83f4620a1536252457229836325""operator" -> "CUCC""token" -> "0:AAAAhAAAAIAIFOEDCVObiS1Pdyogg4JQw5Su4ce9rl/QVDaqKlcGDCzBssmrB3dYL3HcnNG9Gj7IzhiB/cRJF221cELTGHRiFGAjpGpjipkw/EbnoFuxjp3TPAhvprf/vqWm9dmUQCJ7P/+twKy5o5Y9XBBpD+W/jVPX/WbIQofYg3YGwAAAPDTY7g1X3rL326Dnlsifj/UDjoZ0Ftdh8qWG+ofn0P41bbO6q88id06vkU2x2eUEOb1RggqYt+BLHyG3PoLIC0AMGoUcTVyCcGYq15j+ZS23qiA2SLRYgwvvhD3N+HKTSWEPmYQDUKls5fckyQGW6x6yGB71NDUqwntBdQxwmT6W5NG379KyvPwRkZSN4cyJ29HugMMTx/0F9nF6YVgEogEHOms515lQ7f3TJqTidsVdIehQcDb2FdXnCJUjnOJTK4RWRHp9IvTxwXgmsT7WzkwWuSe/12sEx8Zdk2U66//nqgJ5c1FDbuHsqGlKA8fYyo=""timestamp" -> 1655190952281"appSecret" -> "9abee316611wd9ff607feb9f2c496338"
- 排序后果
appkey=2f2d7j9wf8a40&opToken=f630dwff2f8f209c60a6449cf971ad50b3e83f4620a1536252457229836325&operator=CUCC×tamp=1655190952281&token=0:AAAAhAAAAIAIFOEDCVObiS1Pdyogg4JQw5Su4ce9rl/QVDaqKlcGDCzBssmrB3dYL3HcnNG9Gj7IzhiB/cRJF221cELTGHRiFGAjpGpjipkw/EbnoFuxjp3TPAhvprf/vqWm9dmUQCJ7P/+twKy5o5Y9XBBpD+W/jVPX/WbIQofYg3YGwAAAPDTY7g1X3rL326Dnlsifj/UDjoZ0Ftdh8qWG+ofn0P41bbO6q88id06vkU2x2eUEOb1RggqYt+BLHyG3PoLIC0AMGoUcTVyCcGYq15j+ZS23qiA2SLRYgwvvhD3N+HKTSWEPmYQDUKls5fckyQGW6x6yGB71NDUqwntBdQxwmT6W5NG379KyvPwRkZSN4cyJ29HugMMTx/0F9nF6YVgEogEHOms515lQ7f3TJqTidsVdIehQcDb2FdXnCJUjnOJTK4RWRHp9IvTxwXgmsT7WzkwWuSe/12sEx8Zdk2U66//nqgJ5c1FDbuHsqGlKA8fYyo=
- 拼接appSecret
appkey=2f2d7j9wf8a40&opToken=f630dwff2f8f209c60a6449cf971ad50b3e83f4620a1536252457229836325&operator=CUCC×tamp=1655190952281&token=0:AAAAhAAAAIAIFOEDCVObiS1Pdyogg4JQw5Su4ce9rl/QVDaqKlcGDCzBssmrB3dYL3HcnNG9Gj7IzhiB/cRJF221cELTGHRiFGAjpGpjipkw/EbnoFuxjp3TPAhvprf/vqWm9dmUQCJ7P/+twKy5o5Y9XBBpD+W/jVPX/WbIQofYg3YGwAAAPDTY7g1X3rL326Dnlsifj/UDjoZ0Ftdh8qWG+ofn0P41bbO6q88id06vkU2x2eUEOb1RggqYt+BLHyG3PoLIC0AMGoUcTVyCcGYq15j+ZS23qiA2SLRYgwvvhD3N+HKTSWEPmYQDUKls5fckyQGW6x6yGB71NDUqwntBdQxwmT6W5NG379KyvPwRkZSN4cyJ29HugMMTx/0F9nF6YVgEogEHOms515lQ7f3TJqTidsVdIehQcDb2FdXnCJUjnOJTK4RWRHp9IvTxwXgmsT7WzkwWuSe/12sEx8Zdk2U66//nqgJ5c1FDbuHsqGlKA8fYyo=9abee316611wd9ff607feb9f2c496338
- 计算MD5后果
sign -> 3f1991b27b1c86a32e661eabdd3d1f5a
申请示例
curl --location --request POST 'http://identify.verify.mob.com/auth/auth/sdkClientFreeLogin' \--header 'Content-Type: application/json' \--data-raw '{"token":"0:AAAAhAAAAIAIJn3PvTUUJ94umGqPmZCFtprF5Pg7uCxb+Opp+JtZrHIX3yxVOGEHJQLHuRLU1hlTbYyxCMfW53fuck6OL1X+01qdf+NpTVj1ApmQzapKWFB3DEPNNdyad8HwxZY/ZGWcch0Njy+Pb0TgqMwAytBWKu5vlvN9LRoWw/6F3K4BGgAAAPDHlbG1uFKewi7J1g3d6tAor/kIHG0A8csscrESYVfmVYzB6RBfQWfwDpZIYLrXOuSFdWP3bqKbEyIiqvSeY3ktxSus2lUdD6MzwYo1aXJ6oALEW/A07Qx5/3S6ClSmtGrHuzDnC6JCsmHEQWR7S2wNLSojS95Zd91AC2gpqV5tmKEaVGDc827JVEHXFX6Zr5d0pNmBHLS0b67BrNfG4v0qSgcf/OL3a1xOQVieqUDbrAPiNF7Q2wifCbj0FQyIt5+LPpOkqKDbYff21WinJMTOuOMoJcqOhrI1gUEmnHE/ZU8ZZXN52Kffd+Pk7aR7MMU=","opToken":"a53c2dc92083cb1375218a0f1dd35e0050bb26e40ba0a1536204920384995379", "appkey": "2f2d7a68f8a40", "operator": "CUCC", "sign": "576ec00ac6ad80a2d0a92872d748e82b", "timestamp": 1655094782181}'
响应示例
申请胜利
{ "error": null, "res": "ZfukzNuB5oKbxBKxK9MoYFzr1IDZ0Z/i+xLYyq/JCAmi24DPYHdGeUqxE6OjQuP3VY1c76CyfoU=", "seqid": "456484936150429696", "status": 200}
申请失败
{ "status": 4119342, "res": null, "error": "签名谬误", "seqid": "null"}
- 响应参数
key
description
error
返回码形容
res
加密后的JSON串,含有返回的手机号,需进行DES解密
seqid
流水号,申请出错时可能为空
status
返回码
数据解密
返回体中的res数据须要应用appSecet解密
解密形式
DES/CBC/PKCS5Padding
偏移量 00000000
应用base64转码
字段阐明
{ "isValid":1, "phone": "13888888888", "valid":"true"}
字段
类型
必传
阐明
isValid
integer
Y
验证状态,1:胜利, 2:失败
phone
string
Y
返回手机号
valid
boolean
Y
验证状态 true 胜利 false:失败
示例代码
Java
import java.security.Key;import java.security.spec.AlgorithmParameterSpec;import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;import javax.crypto.spec.IvParameterSpec;public class DES { public static final String ALGORITHM = "DES"; public static final String PADDING = "DES/CBC/PKCS5Padding"; private static final byte[] DEFAULT_INITIALIZATION_VECTOR = ("00000000".getBytes()); private String padding = PADDING; private AlgorithmParameterSpec paramSpec; public DES(String padding, byte[] initializationVectorBytes) { this.padding = padding; this.paramSpec = new IvParameterSpec(initializationVectorBytes); } public byte[] decodeBytes(byte[] data, byte[] key) throws Exception { Key secretKey = getKey(key); Cipher cipher = Cipher.getInstance(padding); cipher.init(Cipher.DECRYPT_MODE, secretKey, paramSpec); return cipher.doFinal(data); } private static Key getKey(byte[] key) throws Exception { DESKeySpec dks = new DESKeySpec(key); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM); SecretKey secretKey = keyFactory.generateSecret(dks); return secretKey; } public static byte[] decode(byte[] data, byte[] key) throws Exception { return decode(data, key, DEFAULT_INITIALIZATION_VECTOR); } public static byte[] decode(byte[] data, byte[] key, byte[] ivBytes) throws Exception { DES des = new DES(PADDING, ivBytes); return des.decodeBytes(data, key); }}import java.util.Base64;public abstract class Base64Utils { public Base64Utils() { } public static byte[] decode(byte[] src) { return src.length == 0 ? src : Base64.getDecoder().decode(src); }}
返回码
错误码
阐明
5119104
解密失败
5119105
服务谬误
4119301
数据校验失败
4119302
数据不存在
5119302
数据不存在
4119303
数据曾经存在
5119303
数据曾经存在
4119310
token未找到
5119310
token未找到
4119311
token非法
4119330
App没有初始化
4119331
AppSecret谬误
5119341
余额有余
5119501
未知的运营商类型
5119511
AppKey每分钟验证次数超过限度
5119513
未审核的包名每天验证数量超过限度
4119521
包名没有配置
5119531
AppKey在黑名单中
5119546
[免密登录][APP每分钟]超限
5119507
免密登录失败
5119509
免密获取TOKEN失败
4119342
签名谬误
4119343
timestamp谬误
5119601
未设置价格