getAuthorizationHeader method
Map<String, dynamic>
getAuthorizationHeader(
])
Implementation
Map<String, dynamic> getAuthorizationHeader(String path, Map<String, dynamic>? params, [String? auth]) {
Map<String, dynamic> signMap = {};
signMap["terminal"] = Config.getTerminal;
signMap["version"] = LiveSdkManager.appVersionCode;
signMap["ak"] = LiveSdkManager.instance.getAppId();
signMap["channel"] = "1";
signMap["authorization"] = auth ?? UserManager().getAuth();
signMap["x-auth-timestamp"] = DateTime.now().millisecondsSinceEpoch;
// 将以上所有字段取出按照字典排序
List<String> list = [];
for (String key in signMap.keys) {
list.add(key);
}
if (null != params) {
for (String key in params.keys) {
list.add(key);
}
}
list.sort();
// 拼接成字符串
int index = 0;
StringBuffer sb = StringBuffer();
for (String key in list) {
if (index++ > 0) {
sb.write("&");
}
sb.write(key);
sb.write("=");
if (signMap.containsKey(key)) {
sb.write(signMap[key]);
} else if (null != params && params.containsKey(key)) {
var value = params[key];
if (value is List) {
// 如果value是一个数组,则需要进行jsonEncode操作转换,跟后端的处理模式保持一致
sb.write(json.encode(value));
} else {
sb.write(value);
}
}
}
String preMd5Auth = "$path?$sb";
// _log("preMd5Auth: $preMd5Auth");
// 添加签名验证KEY
signMap['x-auth-sign'] = EncryptUtils.encodeMd5ForJJ(preMd5Auth);
if (!kIsWeb) {
signMap["deviceUid"] = DeviceManager().getDeviceId();
}
signMap["sdkVersion"] = LiveSdkManager.sdkVersion;
return signMap;
}