getAuthorizationHeader method

Map<String, dynamic> getAuthorizationHeader(
  1. String path,
  2. Map<String, dynamic>? params, [
  3. String? auth
])

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;
}