欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

阿里云人脸比对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 )