当前位置: 移动技术网 > IT编程>开发语言>JavaScript > 阿里云人脸比对API封装

阿里云人脸比对API封装

2019年05月26日  | 移动技术网IT编程  | 我要评论

 这是根据封装是根据阿里云官方给的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 )

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网