Files
notes/work/移动杭研/项目备忘/获取企业 token 脚本.md
T
2026-03-01 01:43:46 +08:00

2.1 KiB

// 引入 CryptoJS 库用于计算签名
const CryptoJS = require('crypto-js');

// 准备所需的值
const tenantId = "ImCHJ2JGEMfHFplZ"; // 替换为你的 tenantId
const tenantKey = "zwsz0SoPOmulqvH7"; // 替换为你的 tenantKey
const datetime = "2024-06-12T16:00:00+08:00"; // 固定的日期时间

// 计算 SHA256 哈希值,生成签名
const dataToSign = tenantId + datetime + tenantKey; // 将 tenantId、datetime 和 tenantKey 拼接成一个字符串
const sign = CryptoJS.SHA256(dataToSign).toString(CryptoJS.enc.Hex); // 使用 SHA256 生成签名,并将其转换为 Hex 格式

console.log("Data to be signed:", dataToSign);
console.log("Generated sign:", sign);

// 发送请求以获取 IBStoken
pm.sendRequest({
    url: 'http://dev.p.cdn.10086.cn:8080/api/authentication', // 替换为获取 IBStoken 的接口地址
    method: 'POST', // 使用 POST 方法
    header: {
        'Content-Type': 'application/json', // 指定请求体的数据类型为 JSON
        'Accept': 'application/vnd.cmcdn+json' // 指定请求头接受的响应类型
    },
    body: {
        mode: 'raw', // 设置请求体模式为 raw,即原始 JSON 字符串
        raw: JSON.stringify({
            "authorization": {
                "tenant_id": tenantId,
                "sign": sign
            },
            "datetime": datetime
        })
    }
}, function (err, res) {
    // 检查请求是否出现错误
    if (err) {
        console.error('Error fetching IBStoken:', err); // 输出错误信息
    } else {
        // 解析响应体为 JSON 格式
        const response = res.json();
        console.log('Response received:', response); // 打印完整的响应

        // 假设 IBStoken 在响应体中以 `token` 字段返回
        const IBStoken = response.token;
        if (IBStoken) {
            // 设置全局变量 IBStoken1 为返回的 token
            pm.globals.set("IBStoken1", IBStoken);
            console.log('IBStoken set successfully:', IBStoken); // 打印获取到的 IBStoken
        } else {
            console.warn('Token not found in response.'); // 如果响应中没有 token 字段,打印警告
        }
    }
});