기능 설명
- 고객이 획득한 토큰, opToken 및 기타 데이터를 제출하고 확인 후 휴대폰 번호를 반환합니다.
발신 주소
- 게시 링크
요청 헤더
- 콘텐츠 유형 :application/json
- 앱키:xxxxxxxxx
항목 설명
필드 | 유형 | 설명하다 | 통과해야합니다 |
---|---|---|---|
앱키 | 끈 | 앱 로고 | 와이 |
토큰 | 끈 | 클라이언트 토큰 | 와이 |
옵토큰 | 끈 | 클라이언트가 반환한 연산자 토큰 | 와이 |
운영자 | 끈 | 클라이언트가 반환한 교환원, CMCC: China Mobile Communications, CUCC: China Unicom, CTCC: China Telecom | 와이 |
징후 | 끈 | 서명(MD5(모든 매개변수는 a=b&b=c+appSecret으로 구성된 양의 키 시퀀스 사용)) | 와이 |
타임스탬프 | 긴 | 현재 타임스탬프(밀리초) | 와이 |
md5 | 끈 | 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=
- 스티칭앱비밀
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"
}
- 응답 매개변수
열쇠 | 설명 |
---|---|
오류 | 반환 코드 설명 |
입술 | 암호화된 JSON 문자열에는 반환된 휴대폰 번호가 포함되어 있으며 DES로 해독해야 합니다. |
세귀드 | 일련 번호, 요청이 실패하면 비어 있을 수 있습니다. |
상태 | 반환 코드 |
데이터 암호 해독
반환된 본문의 res 데이터는 appSecet으로 해독해야 합니다.
복호화 방법
DES/CBC/PKCS5패딩
오프셋 00000000
base64 트랜스코딩 사용
필드 설명
{
"isValid":1,
"phone": "13888888888",
"valid":"true"
}
필드 | 유형 | 통과해야합니다 | 설명하다 |
---|---|---|---|
유효한 | 정수 | 와이 | 확인 상태, 1: 성공, 2: 실패 |
핸드폰 | 끈 | 와이 | 전화번호 반환 |
유효한 | 부울 | 와이 | 확인 상태 true 성공 false: 실패 |
샘플 코드
자바
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 | 토큰을 찾을 수 없음 |
5119310 | 토큰을 찾을 수 없음 |
4119311 | 토큰이 불법입니다 |
4119330 | 앱이 초기화되지 않았습니다. |
4119331 | AppSecret 오류 |
5119341 | 잔액 불충분 |
5119501 | 알 수 없는 이동통신사 유형 |
5119511 | AppKey每分钟验证次数超过限制 |
5119513 | 未审核的包名每天验证数量超过限制 |
4119521 | 包名没有配置 |
5119531 | AppKey在黑名单中 |
5119546 | [免密登录][APP每分钟]超限 |
5119507 | 免密登录失败 |
5119509 | 免密获取TOKEN失败 |
4119342 | 签名错误 |
4119343 | timestamp错误 |
5119601 | 未设置价格 |