javascript实现腾讯AI开放平台,调用API时的接口鉴权,生成合法签名

3次阅读

共计 968 个字符,预计需要花费 3 分钟才能阅读完成。

整个流程图

在网上查了很多,但看到有人用 javascript 前端做腾讯 AI 开放平台,生成签名的,所以闲着就自己弄了一下。实现的流程是和官方的实例是一样的,不过官方只给了 PHP 和 Pythonr 的方式。

大致的流程是:字典排序 -> 拼接 URL 键值对(value 部分需要 URL 编码)-> 拼接 app_key -> MD5 运算 -> 转换大写

字典排序:《javascript 实现 PHP 字典排序 ksort》

拼接 URL 键值对:

// 拼按 URL 键值对
Object.keys(aa).forEach((key, i) => {if (aa[key] !== ''){bb += key + '=' + encodeURIComponent(aa[key]) + '&'
  }
});

拼接 app_key:

// 拼接 app_key
let cc = `${bb}app_key=${config.tencentKey}`

MD5 运算:

const MD5 = require("../../static/javascripts/md5");
// MD5 运算
let dd = MD5(cc)

// 转换大写

// 转换大写
let sign = dd.toUpperCase()

最后,得出 sign 合法签名。这样就可以请求腾讯 API 开放平台上的 API。

【注意:】
如果使用身份证 OCR 接口,image 字段是的 base64 的时候,格式问题(不需要前面 data:image/jpg;base64,)。如果使用微信小程序,可以下得到 base64 格式:

wx.chooseImage({sizeType: ['original', 'compressed'],
    sourceType: ['album', 'camera'],
    success: function (res) {
        var tempFilePaths = res.tempFilePaths
        wx.request({url: tempFilePaths[0],
            method: 'GET',
            responseType: 'arraybuffer',
            success: function (res) {var base64 = wx.arrayBufferToBase64(res.data);
                
                // base64 是没有前面的, 可直接使用. 如果需要访问, 则需要加上前面字段
                var url = 'data:image/jpg;base64,' + base64
            }
        });
    }
})

正文完
 0