阿里云人脸比对API封装

摘要:
记录下来以备下次使用。

这是根据封装是根据阿里云官方给的Demo进行修改的,当时是因为编写微信小程序云函数需要使用到阿里云人脸比对接口,才对其进行封装的。

记录下来,方便下次使用。

复制下来可以直接使用。

用到的依赖如下,使用npm安装:

  • 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 = newDate().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     varhash;
54     hash = crypto.createHash('md5');
55 hash.update(buffer);
56     return hash.digest('base64');
57 };
58 
59 sha1 = function(stringToSign, secret) {
60     varsignature;
61     return signature = crypto.createHmac('sha1', secret).update(stringToSign).digest().toString('base64');
62 };
63 
64 var body = options.body || '';
65 varbodymd5;
66 if (body === void 0 || body === '') {
67     bodymd5 =body;
68 } else{
69     bodymd5 = md5(newBuffer(body));
70 }
71 
72 var stringToSign = options.method + "
" + options.headers.accept + "
" + bodymd5 + "
" + options.headers['content-type'] + "
" + options.headers.date + "
" +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 functionAliFace(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     returnpromise;
95 }
96 
97 
98 
99 /**
100 * 调用接口进行测试
101  */
102 AliFace(options).then(
103     function(res) {
104 console.log(res)
105 }
106 )

免责声明:文章转载自《阿里云人脸比对API封装》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇java对数计算vueRouter中scrollBehavior实现滚动固定位置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

APP漏洞自动化扫描专业评测报告(下篇)

上篇、中篇回顾:通过收费情况、样本测试后的扫描时间、漏洞项对比以及扫描能力这几个方面对阿里聚安全[1]、360App漏洞扫描[2]、腾讯金刚审计系统[3]、百度移动云测试中心[4]以及AppRisk Scanner[5]进行了对比分析。作为本系列的最后一篇,我将会以4个随机选取的APP的测试结果来进行对比。 四、扫描结果对比 选取的APP:说明一下这次选择...

java 使用qrcode生成二维码图片或者base64字符串

通过传入字符串,生成二维码图片或者base64格式字符串 1 public static String barcode2Base64(String msg) throwsException{ 2 Qrcode x = newQrcode(); 3 //N代表数字,A代表a-z,B代表其他字符 4 x.setQ...

跨平台开发之阿里Weex框架环境搭建(二)

 爱编程爱分享,原创文章,转载请注明出处,谢谢! http://www.cnblogs.com/fozero/p/5995195.html 上篇文章(http://www.cnblogs.com/fozero/p/5995122.html)我们搭建好weex环境,并在浏览器成功渲染页面,这篇文章我们接着建立一个项目 1、新建一文件夹如weexdemo; 2...

GIF/PNG/JPG和WEBP/base64/apng图片优点和缺点整理

  GIF/PNG/JPG/WEBP/APNG都是属于位图(位图 ,务必区别于矢量图);   GIF/PNG和JPG这三种格式的图片被广泛应用在现今的互联网中,gif曾在过去互联网初期慢速的情况下几乎是做到了大一统的地位,而现如今随着互联网技术应用和硬件条件的提高,png和jpg格式的图片越来越多的被应用,gif昔日的辉煌一去不复, webp图片格式现在还...

wangEditor粘贴word图片且图片文件自动上传功能

图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.js,找到UM.plugins['autoupload'],然后找到autoUploadHandler方法,注释掉其中的代码。加入下面的代码: //判断剪贴板的内容是否包含...

vue中Axios的封装和API接口的管理

前端小白的声明: 这篇文章为转载:主要是为了方便自己查阅学习。如果对原博主造成侵犯,我会立即删除。 转载地址:点击查看 如图,面对一团糟代码的你~~~真的想说,What F~U~C~K!!! 回归正题,我们所要的说的axios查看更多关于 axios 的文章 的封装和api接口的统一管理,其实主要目的就是在帮助我们简化代码和利于后期的更新维护。 一、ax...