整个流程图

在网上查了很多,但看到有人用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_keylet 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            }        });    }})