Last active
October 15, 2021 01:46
-
-
Save voicon/6e7c3a981c860c6dc0960eef77d342fe to your computer and use it in GitHub Desktop.
mtopsdk.security.ISign
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.版本 2 | |
.子程序 getApiData, 文本型, , 简单传一些差异些的数据即可 | |
.参数 api, 文本型 | |
.参数 data, 文本型 | |
.参数 v, 文本型, 可空, 1.0 | |
.参数 t, 文本型, 可空 | |
.参数 deviceId, 文本型, 可空, AoGs1YpVFee2wZlirN9fiW_Klp0DJEBewwUQwxakwKVo | |
.参数 appKey, 文本型, 可空, 21549244 | |
.参数 sid, 文本型, 可空, 130d701871ee49e82c179dcfe6e640d6 | |
.参数 uid, 文本型, 可空, 2804168909 | |
.参数 utdid, 文本型, 可空, XJswASY2BcMDAESPz9P1rUFa | |
.参数 ttid, 文本型, 可空, 600000@moon_android_6.3.3 | |
.局部变量 getsignurl, 文本型 | |
.局部变量 webText, 文本型 | |
.局部变量 apiurl, 文本型 | |
.局部变量 header, 文本型 | |
.局部变量 sign, 文本型 | |
.局部变量 json, 类_json | |
.如果真 (t = “”) | |
t = 时间_取现行时间戳 (真) | |
.如果真结束 | |
.如果真 (deviceId = “”) | |
' deviceId = “AoGs1YpVFee2wZlirN9fiW_Klp0DJEBewwUQwxakwKVo” ' AoGs1YpVFee2wZlirN9fiW_Klp0DJEBewwUQwxakwKVo | |
deviceId = “Xk” + 文本_取随机字符 (42) | |
.如果真结束 | |
.如果真 (appKey = “”) | |
appKey = “21549244” | |
.如果真结束 | |
.如果真 (ttid = “”) | |
ttid = “600000@moon_android_6.3.3” ' "ttid" -> "600000@moon_android_6.3.3" | |
.如果真结束 | |
.如果真 (utdid = “”) | |
utdid = “Xk” + 文本_取随机字符 (22) | |
.如果真结束 | |
.如果真 (v = “”) | |
v = “1.0” | |
.如果真结束 | |
json.置属性 (“api”, api) | |
json.置属性 (“v”, v) | |
json.置属性 (“data”, 编码_URL编码 (data)) | |
json.置属性 (“t”, t) | |
json.置属性 (“ttid”, ttid) | |
json.置属性 (“utdid”, utdid) | |
json.置属性 (“appkey”, appKey) | |
json.置属性 (“appkey”, appKey) | |
json.置属性 (“deviceId”, deviceId) | |
json.置属性 (“x-features”, “27”) | |
json.置属性 (“sid”, sid) | |
getsignurl = “http://a.neibujia666.com:888/getxsign?type=moon&key=testkey&data=” + 编码_URL编码 (json.取数据文本 (), 真, 真) | |
.计次循环首 (3, ) ' 有时候签名会失败。最多重试3次 | |
webText = 到文本 (网页_访问_对象 (getsignurl)) | |
.如果真 (json.解析 (webText)) | |
.如果真 (json.取通用属性 (“code”) = “1”) | |
sign = json.取通用属性 (“data[0].sign”) | |
.如果真结束 | |
.如果真结束 | |
.如果 (sign = “” 或 sign = “null”) | |
延时 (50) ' 如果获取失败。那么稍等一会重试 | |
.否则 | |
跳出循环 () | |
.如果结束 | |
.计次循环尾 () | |
.如果真 (sid = “”) | |
sid = json.取通用属性 (“data[0].sid”) | |
.如果真结束 | |
' 如果还是失败。那就说失败了 | |
.如果真 (sign = “” 或 sign = “null”) | |
返回 (“获取签名出错了:” + webText) | |
.如果真结束 | |
' 构建API的请求头部 | |
header = “x-utdid: [utdid]/hxf/x-devid: [devid]/hxf/x-ttid: [ttid]/hxf/x-t: [t]/hxf/x-features: 27/hxf/x-pv: 5.1/hxf/x-sign: [sign]/hxf/x-appkey: [appkey]/hxf/” | |
header = 子文本替换 (header, “/hxf/”, #换行符, , , 真) | |
header = 子文本替换 (header, “[utdid]”, utdid, , , 真) | |
header = 子文本替换 (header, “[devid]”, deviceId, , , 真) | |
header = 子文本替换 (header, “[ttid]”, ttid, , , 真) | |
header = 子文本替换 (header, “[t]”, t, , , 真) | |
header = 子文本替换 (header, “[appkey]”, appKey, , , 真) | |
header = 子文本替换 (header, “[sign]”, sign, , , 真) | |
.如果真 (uid ≠ “”) | |
header = header + “x-uid:” + uid + #换行符 | |
.如果真结束 | |
.如果真 (sid ≠ “”) | |
header = header + “x-sid:” + sid + #换行符 | |
.如果真结束 | |
apiurl = getMtopUrl (api, v, data) | |
webText = 编码_Utf8到Ansi (网页_访问_对象 (apiurl, , , , , header)) | |
返回 (webText) | |
.子程序 getMtopUrl, 文本型 | |
.参数 api, 文本型 | |
.参数 v, 文本型 | |
.参数 data, 文本型 | |
.局部变量 Url, 文本型 | |
Url = “https://acs.m.taobao.com/gw/” + api + “/” + v + “/?data=” + 编码_URL编码 (data, 真, 真) ' 这个应该不同地方获取不同的 | |
返回 (Url) | |
.版本 2 | |
.子程序 mtop_taobao_wireless_share_password_get, 文本型, , 淘口令信息 mtop.taobao.wireless.share.password.get | |
.参数 tkl, 文本型 | |
.局部变量 data, 文本型 | |
.局部变量 api, 文本型 | |
data = “{#passwordType#:#tao#,#passwordText#:#[tkl]#}” | |
data = 子文本替换 (data, “#”, #引号, , , 真) | |
data = 子文本替换 (data, “[tkl]”, tkl, , , 真) | |
api = “mtop.taobao.wireless.share.password.get” ' API 的调用地址 | |
返回 (getApiData (api, data)) | |
public String getMtopApiSign(HashMap<String, String> params, String appKey, String authCode) { | |
String instanceId = getInstanceId(); | |
if (params == null) { | |
TBSdkLog.e("mtopsdk.InnerSignImpl", instanceId + " [getMtopApiSign] params is null.appKey=" + appKey); | |
return null; | |
} else if (appKey == null) { | |
params.put("SG_ERROR_CODE", "AppKey is null"); | |
TBSdkLog.e("mtopsdk.InnerSignImpl", instanceId + " [getMtopApiSign] AppKey is null."); | |
return null; | |
} else if (this.sgMgr == null) { | |
params.put("SG_ERROR_CODE", "SGManager is null"); | |
TBSdkLog.e("mtopsdk.InnerSignImpl", instanceId + " [getMtopApiSign]SecurityGuardManager is null,please call ISign init()"); | |
return null; | |
} else { | |
try { | |
SecurityGuardParamContext sgContext = new SecurityGuardParamContext(); | |
sgContext.appKey = appKey; | |
sgContext.requestType = 7; | |
Map<String, String> paramsMap = convertInnerBaseStrMap(params, appKey); | |
if (paramsMap != null && 2 == getEnv()) { | |
paramsMap.put("ATLAS", "daily"); | |
} | |
sgContext.paramMap = paramsMap; | |
return this.sgMgr.getSecureSignatureComp().signRequest(sgContext, authCode); | |
} catch (SecException e) { | |
int errorCode = e.getErrorCode(); | |
kPt.commitStats("SignMtopRequest", String.valueOf(errorCode), ""); | |
params.put("SG_ERROR_CODE", String.valueOf(errorCode)); | |
TBSdkLog.e("mtopsdk.InnerSignImpl", instanceId + " [getMtopApiSign] ISecureSignatureComponent signRequest error,errorCode=" + errorCode, e); | |
return null; | |
} catch (Exception e2) { | |
TBSdkLog.e("mtopsdk.InnerSignImpl", instanceId + " [getMtopApiSign] ISecureSignatureComponent signRequest error", e2); | |
return null; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment