阿里云人脸比对API封装
程序员文章站
2022-11-12 09:37:08
这是根据封装是根据阿里云官方给的Demo进行修改的,当时是因为编写微信小程序云函数需要使用到阿里云人脸比对接口,才对其进行封装的。 记录下来,方便下次使用。 复制下来可以直接使用。 用到的依赖如下: request url crypto ......
这是根据封装是根据阿里云官方给的demo进行修改的,当时是因为编写微信小程序云函数需要使用到阿里云人脸比对接口,才对其进行封装的。
记录下来,方便下次使用。
复制下来可以直接使用。
用到的依赖如下:
- request
- url
- crypto
1 /** 2 * 文件说明:阿里云人脸比对api封装 3 */ 4 5 var request = require('request'); 6 var url = require('url'); 7 var crypto = require('crypto'); 8 var date = new date().toutcstring() 9 10 ///////////////////////////////////////////////////////////////////////// 11 /** 12 * 配置信息 13 * ak_id :阿里云控制台获取的accesskey 14 * ak_secret :阿里云控制台获取的accesskeysecret 15 * api_url :阿里云控制台获取api接口地址 16 */ 17 // accesskey 18 var ak_id = ''; 19 // accesskeysecret 20 var ak_secret = ''; 21 // apiurl 22 var api_url = '' 23 24 /** 25 * 读取本地图片并转base64编码 26 */ 27 // 图片1 28 var fs = require("fs"); 29 var filepath = "01.jpg"; 30 var imagedata = fs.readfilesync(filepath); 31 var imagebase64 = imagedata.tostring("base64"); 32 //图片2 33 var fs = require("fs"); 34 var filepath = "02.jpg"; 35 var imagedata = fs.readfilesync(filepath); 36 var imagebase64_2 = imagedata.tostring("base64"); 37 38 var options = { 39 url: api_url, 40 method: 'post', 41 body: '{"type": "1", "content_1":"' + imagebase64 + '","content_2":"' + imagebase64 + '"}', 42 headers: { 43 'accept': 'application/json', 44 'content-type': 'application/json', 45 'date': date, 46 'authorization': '' 47 } 48 }; 49 ///////////////////////////////////////////////////////////////////////// 50 51 52 md5 = function (buffer) { 53 var hash; 54 hash = crypto.createhash('md5'); 55 hash.update(buffer); 56 return hash.digest('base64'); 57 }; 58 59 sha1 = function (stringtosign, secret) { 60 var signature; 61 return signature = crypto.createhmac('sha1', secret).update(stringtosign).digest().tostring('base64'); 62 }; 63 64 var body = options.body || ''; 65 var bodymd5; 66 if (body === void 0 || body === '') { 67 bodymd5 = body; 68 } else { 69 bodymd5 = md5(new buffer(body)); 70 } 71 72 var stringtosign = options.method + "\n" + options.headers.accept + "\n" + bodymd5 + "\n" + options.headers['content-type'] + "\n" + options.headers.date + "\n" + url.parse(options.url).path; 73 74 var signature = sha1(stringtosign, ak_secret); 75 var authheader = "dataplus " + ak_id + ":" + signature; 76 options.headers.authorization = authheader; 77 78 // 封装函数 79 function aliface(options) { 80 let promise = new promise(function (resolve, reject) { 81 request(options, (error, response, body) => { 82 // 失败 83 if (error) { 84 console.log("error", error) 85 reject() 86 } 87 console.log("step4-response body:", response.statuscode, body) 88 console.log(typeof (body)) 89 // 成功 90 // 注意:这里的body是string类型 91 resolve(body) 92 }) 93 }) 94 return promise; 95 } 96 97 98 99 /** 100 * 调用接口进行测试 101 */ 102 aliface(options).then( 103 function (res) { 104 console.log(res) 105 } 106 )
上一篇: 离婚财产分割与赔偿计算标准,标准是什么
下一篇: 结婚送什么礼物合适