功能說明
- 提交客戶端獲取到的token、opToken等數據,驗證后返回手機號碼
調用地址
請求頭
入參說明
字段 | 類型 | 說明 | 必傳 |
---|---|---|---|
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 | 未設置價格 |
審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
接口
+關注
關注
33文章
8497瀏覽量
150834 -
API
+關注
關注
2文章
1485瀏覽量
61814 -
SDK
+關注
關注
3文章
1026瀏覽量
45778
發布評論請先 登錄
相關推薦
我想做一個號碼攔截器。面對面5米內接收到對方的手機號碼。我也咨詢很多人,不是技
我想做一個號碼攔截器。面對面5米內接收到對方的手機號碼。我也咨詢很多人,不是技術問題就是,怕這東西觸犯法律。我只是正規用途,并不會觸犯法律底線!望“能人”解決我的問題!樣品只要符合以上條件,重金酬謝...謝謝!QQ896776242加我請注明電子*** 丁先生
發表于 04-29 16:16
基于51單片機的tc35開發,怎么提取收到短信的手機號碼呢?
基于51單片機的tc35開發,大家有什么方法可以提取收到短信的手機號嗎,或者實直接回復短信的方法呢?或者怎么實現提取指針指向的變量和指針指向的變量的后面的變量呢?就是:在收到的緩存數組里用strstr函數找到+861,然后怎么提取+861后免得號碼呢》?求解跪求,在線等解
發表于 08-06 10:13
【YZ】基于雙核心架構識別手機號碼的快遞派送器
本帖最后由 wangjiamin2014 于 2015-1-6 14:57 編輯
項目名稱: 基于雙核心架構識別手機號碼的快遞派送器團隊名稱:YZ團隊成員:鄭斌 紀興宇作品演示作品介紹目前物流
發表于 12-31 14:53
GSM模塊與MINIstm32通信不能顯示出我的手機號碼
GSM 模塊與 MINIstm32通信液晶上不能顯示出我的手機號碼。。其他的 幾項都可以顯示出來。。希望大神幫忙答復下?。。?/div>
發表于 04-16 00:13
別讓“手機小號”成違法行為幫兇
所謂手機臨時號,又被稱為手機“小號”,就是在不更換手機卡、不改變原來手機號碼的情況下,向通信運營商或網絡服務商申請購買一個新的手機號碼,和原
發表于 12-08 09:37
?4392次閱讀
這些人更值得信任? 5年以上不換手機號碼的人
如今智能手機跟我們的關系越加密切,可以說幾乎是人手一部手機、甚至是多部手機。不過如果你的身邊肯定有這樣的人,那就是他們自己擁有兩張手機號碼卡,而其中也有一部分,是5年以上都不更換
發表于 03-18 11:45
?1280次閱讀
阿里云通信發布全新號碼認證服務, 重新定義手機號碼認證的方式
走普通驗證方式的"尋常路",采用用戶無感知的驗證方式,全程無需等待,驗證結果秒知,將用戶的驗證流程精簡為:輸入手機號碼 → 驗證成功。(圖1)號碼認證服務注冊流程:由于注冊認證的步驟被大幅減少,由原來
發表于 12-18 16:20
?348次閱讀
中國移動即將開啟eSIM一號雙終端業務試驗
據官方的介紹,用戶可在自己的手機號碼(主號碼)賬戶和套餐下,添加一個eSIM輔助智能設備,使手機終端與附屬終端共用一個手機號碼(主號碼),主
發表于 01-21 09:09
?2653次閱讀
中國團隊成功將國內手機號碼寫入三款新iPhone的eSIM卡
昨日,國內“超雪團隊”宣布,其已經成功將國內手機號碼寫入iPhone XS的eSIM卡當中,實現雙卡雙待。今日,該團隊宣布,已經成功將國內手機號碼寫入三款新iPhone的eSIM卡,在三大運營商尚未支持的情況下實現實體卡+eSIM卡雙卡雙待。
工信部:取消移動電話號碼歸屬地,將增加電信詐騙風險
手機號碼歸屬地能否取消?據人民網報道,近期工業和信息化部的權威解答稱,取消手機號碼歸屬地,將增大電信詐騙風險。目前暫未出臺取消手機號碼歸屬地相關政策。
淺談手機號碼歸屬地更改的影響
隨著長途費、漫游費的取消,手機號歸屬地似乎失去了意義,而且存在諸多不便,尤其是變換工作地、生活地之后,那么能取消手機號的歸屬地設置嗎?或者是否可以允許變更手機號歸屬地?最近就有多位網友向工信部反映了這一問題,工信部也給出了統一回
發表于 03-17 10:24
?2.5w次閱讀
網友曝手機號碼過戶竟被要求預存3.6萬元話費
日前網絡報道稱,四川宜賓的劉先生最近希望將手機號碼過戶到自己名下,被中國電信要求預存3.6萬元話費才能辦理。
REST API是什么,如何使用REST端口
API是Application Programming Interface(應用程序接口)的縮寫,它是拿來描述一個類庫的特征或是如何去運用它。按照目前比較主流的分法,可以分為REST API
ChatGPT申請api key 需要國外手機號驗證怎么辦?
key還是需要驗證,就是ChatGPT把注冊需要驗證手機號的步驟移到了申請api申請需要驗證??梢钥闯鲠槍?b class='flag-5'>api是以后的重心發展方向。 那我想申請ChatGPT api key 沒有
評論