如影
  1. TOKEN授权认证
如影
  • FAQ
  • TOKEN授权认证
    • 前言
    • 获取authorizationCode接口
      GET
  • Api对接
    • Api对接流程图--必看
    • 基础信息设置
      • 1.0 创建/更新企业
      • 1.2 创建项目/更新项目
      • 2.1 项目/楼层/CAD新增接口
      • 2.2 项目/建筑/楼层/CAD/比例尺更新接口
      • 2.3 项目/建筑/楼层删除接口
      • 2.11 场布图同步/更新
      • 2.10 将用户授权到项目
      • 设置cad为使用状态
      • 第三方项目绑定到vsleem项目
      • 创建bim/更新bim
    • 巡检记录上传
      • 2.4 同步巡检记录
      • 2.4.2 同步巡检记录--适用于项目建筑楼层CAD信息在平台维护
      • 2.5 同步更新巡检视频
    • 数据获取
      • 1.1 获取账号下所有企业信息
      • 2.0 查询企业下项目列表
      • 2.6 根据第三方巡检id或vsleem巡检id查询巡检结果
      • 2.7 分页查询巡检记录结果集
      • 2.8 获取聚焦点
      • 2.13 获取工单模版
      • 2.14 获取工单列表
      • 2.12 查询建筑楼层和cad信息
      • 2.21 获取带有轨迹点位的cad图纸
      • 获取巡检点位
      • 获取手势识别信息
      • 获取项目下所有工单id
      • 2.22 获取全景图片和带有轨迹点位的cad图纸
      • 2.8.1 获取映射点(bim点位转换)
      • 项目下坐标系数据
    • 工单影像数据
      • 2.15 添加工单问题
      • 2.16 修改工单状态
      • 2.17 批量添加或更新工单
      • 2.18 批量添加或更新高清图片
      • 2.19 根据第三方id批量删除高清图片
      • 2.20 根据第三方工单id批量删除工单问题
  1. TOKEN授权认证

前言

1、账号信息(需授权配置)#

appKey:
appSecret:

2、sign加密方式**(每个接口的sign都需要重新计算)**#

注意:
1.
每个接口的sign都需要重新计算
2.
所有 key 都需要放入参数中进行计算。
3.
参数不填的不需要参与计算
4.
参数为空的需要参与计算
请使用此版本以上的包
 <dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.0.4</version>
</dependency>
将参数名(除了Sign参数)按key进行字典升序排列连成字符串,如key1=value1&key2=value2;
使用HMAC-SHA256加密算法,使用签名密钥值(appSecret)对字符串进行加密得到sign;
加密代码参考:
Go:
import (
    "crypto/hmac"
    "crypto/sha256"
    "encoding/hex"
    "fmt"
    "sort"
    "strings"
)

func generateSignature(parameters map[string]string, appSecret string) (string, error) {
    // 步骤1:将参数名按字典升序排序
    var keys []string
    for key := range parameters {
        if key != "sign" {
            keys = append(keys, key)
        }
    }
    sort.Strings(keys)

    // 步骤2:构建参数字符串
    var paramString strings.Builder
    for _, key := range keys {
        paramString.WriteString(key)
        paramString.WriteString("=")
        paramString.WriteString(parameters[key])
        paramString.WriteString("&")
    }
    paramStringStr := paramString.String()
    paramStringStr = strings.TrimSuffix(paramStringStr, "&")

    // 步骤4:使用HMAC-SHA256加密算法对源串进行加密
    key := []byte(appSecret)
    input := []byte(paramStringStr)
    mac := hmac.New(sha256.New, key)
    mac.Write(input)
    hmacData := mac.Sum(nil)

    // 将字节数组转换为十六进制字符串
    result := hex.EncodeToString(hmacData)

    return result, nil
}

Python:
import hashlib
import hmac
from collections import OrderedDict

def generate_signature(parameters, app_secret):
    # 步骤1:将参数名按字典升序排序
    sorted_params = OrderedDict(sorted(parameters.items()))

    # 步骤2:构建参数字符串
    param_string = ''
    for key, value in sorted_params.items():
        if key != 'sign':
            param_string += f'{key}={value}&'
    param_string = param_string[:-1]

    # 步骤4:使用HMAC-SHA256加密算法对源串进行加密
    secret_key = bytes(app_secret, 'utf-8')
    input_data = bytes(param_string, 'utf-8')
    hmac_obj = hmac.new(secret_key, input_data, hashlib.sha256)
    hmac_data = hmac_obj.digest()

    # 将字节数组转换为十六进制字符串
    result = ''.join(f'{b:02x}' for b in hmac_data)

    return result

Java
public static String generateSignature(Map<String, String> parameters, String appSecret) throws Exception {
    // 步骤1:将参数名按字典升序排序
    TreeMap<String, String> sortedParams = new TreeMap<>(parameters);

    // 步骤2:构建参数字符串
    StringBuilder paramString = new StringBuilder();
    for (Map.Entry<String, String> entry : sortedParams.entrySet()) {
        if (!"sign".equals(entry.getKey())) {
            paramString.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
        }
    }
    paramString.deleteCharAt(paramString.length() - 1);
    // 步骤4:使用HMAC-SHA256加密算法对源串进行加密
    return hmacSha256(paramString.toString(), appSecret);
}

// HMAC-SHA256加密
private static String hmacSha256(String input, String key) throws Exception {
    Mac mac = Mac.getInstance("HmacSHA256");
    SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
    mac.init(secretKey);
    byte[] hmacData = mac.doFinal(input.getBytes(StandardCharsets.UTF_8));
    StringBuilder result = new StringBuilder();
    for (byte b : hmacData) {
        result.append(String.format("%02x", b));
    }
    return result.toString();
}
上一页
FAQ
下一页
获取authorizationCode接口
Built with