阿里云人脸比对API封装

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

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

复制下来可以直接使用。

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

  • request
  • url
  • crypto
/**
 * 文件说明:阿里云人脸比对API封装
 */

var request = require('request');
var url = require('url');
var crypto = require('crypto');
var date = new Date().toUTCString()

/
/**
 * 配置信息
 * ak_id :阿里云控制台获取的AccessKey
 * ak_secret :阿里云控制台获取的AccessKeySecret 
 * Api_Url :阿里云控制台获取Api接口地址
 */
// AccessKey
var ak_id = '';
// AccessKeySecret 
var ak_secret = '';
// APIURL
var Api_Url = ''

/**
 * 读取本地图片并转base64编码
 */
// 图片1
var fs = require("fs");
var filePath = "01.jpg";
var imageData = fs.readFileSync(filePath);
var imageBase64 = imageData.toString("base64");
//图片2
var fs = require("fs");
var filePath = "02.jpg";
var imageData = fs.readFileSync(filePath);
var imageBase64_2 = imageData.toString("base64");

var options = {
    url: Api_Url,
    method: 'POST',
    body: '{"type": "1", "content_1":"' + imageBase64 + '","content_2":"' + imageBase64 + '"}',
    headers: {
        'accept': 'application/json',
        'content-type': 'application/json',
        'date': date,
        'Authorization': ''
    }
};
/


md5 = function (buffer) {
    var hash;
    hash = crypto.createHash('md5');
    hash.update(buffer);
    return hash.digest('base64');
};

sha1 = function (stringToSign, secret) {
    var signature;
    return signature = crypto.createHmac('sha1', secret).update(stringToSign).digest().toString('base64');
};

var body = options.body || '';
var bodymd5;
if (body === void 0 || body === '') {
    bodymd5 = body;
} else {
    bodymd5 = md5(new Buffer(body));
}

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;

var signature = sha1(stringToSign, ak_secret);
var authHeader = "Dataplus " + ak_id + ":" + signature;
options.headers.Authorization = authHeader;

// 封装函数
function AliFace(options) {
    let promise = new Promise(function (resolve, reject) {
        request(options, (error, response, body) => {
            // 失败
            if (error) {
                console.log("error", error)
                reject()
            }
            console.log("step4-response body:", response.statusCode, body)
            console.log(typeof (body))
            // 成功
            // 注意:这里的body是string类型
            resolve(body)
        })
    })
    return promise;
}



/**
 * 调用接口进行测试
 */
AliFace(options).then(
    function (res) {
        console.log(res)
    }
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开源分享汇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值