准备工作
在使用内容检测API之前,需要先注册阿里云账号,添加AccessKey并开通内容安全。
操作步骤:
- 访问阿里云官网,注册阿里云账号。如果已有阿里云账号,请跳过此步骤。
- 访问内容安全产品开通页面,单击立即开通,正式开通服务。
- 访问AccessKey管理页面,管理您的AccessKey ID和AccessKey Secret。
说明: AccessKey是您使用内容安全API时用到的密钥,拥有您的账号的完整权限。请您妥善保管它们,避免泄露,并定期更换您的AccessKey。
详细内容访问内容检测API开发准备
开发
引入加密库
import crypto from './crypto-js/index.js';
生成uuid
uuid() {
var s = [];
var hexDigits = "0123456789abcdef";
for (var i = 0; i < 36; i++) {
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
}
s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
s[8] = s[13] = s[18] = s[23] = "-";
var uuid = s.join("");
return uuid;
}
调用微信API获取图像
camera(){
var that = this;
wx.chooseImage({
count: 1, // 最多可以选择的图片张数,默认9
/* sizeType: ['original', 'compressed'], */// 可以指定是原图还是压缩图,默认二者都有
sizeType: ['compressed'],
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
console.log("获取图片", res)
wx.compressImage({
src: res.tempFilePaths[0], // 图片路径
quality: 10, // 压缩质量
success: function (result) {
/* that.uploadImage(that, result.tempFilePath) */
console.log('图片路径',result)
// 调用阿里云API
that.imageScan()
}
})
}
})
}
阿里云API调用
imageScan(){
var that = this;
var clientInfo = {
"ip":"127.0.0.1"
};
// 请求体,根据需要调用相应的算法
let requestBody = JSON.stringify({
bizType:'Green',
scenes:['porn'],
tasks:[{
'dataId':that.uuid(),
'url':'https://xxx.png'
}]
});
// 请求头
let requestHeaders = {
'Accept':'application/json',
'Content-Type':'application/json',
'Content-MD5':crypto.enc.Base64.stringify(crypto.MD5(requestBody)),
'Date':new Date().toUTCString(),
'x-acs-version':'2017-01-12',
'x-acs-signature-nonce':that.uuid(),
'x-acs-signature-version':'1.0',
'x-acs-signature-method':'HMAC-SHA1'
}
// 对请求的签名
let signature = []
signature.push('POST\n');
signature.push('application/json\n');
signature.push(requestHeaders['Content-MD5'] + '\n');
signature.push('application/json\n');
signature.push(requestHeaders['Date'] + '\n');
signature.push('x-acs-signature-method:HMAC-SHA1\n');
signature.push('x-acs-signature-nonce:' +requestHeaders['x-acs-signature-nonce'] + '\n');
signature.push('x-acs-signature-version:1.0\n');
signature.push('x-acs-version:2017-01-12\n');
signature.push('/green/image/scan?clientInfo=' + JSON.stringify(clientInfo));
console.log("加密签名",signature.join(''))
// 对签名进行HmacSHA1加密 nodejs方式:crypto.createHmac('sha1', accessKeySecret).update(signature.join('')).digest().toString('base64');
let hmacsha1 = crypto.HmacSHA1(signature.join(''),that.data.AccessKeySecret)
let authorization = crypto.enc.Base64.stringify(hmacsha1);
console.log("签名加密后", authorization)
requestHeaders.Authorization = "acs" + " " + that.data.AccessKeyId + ":" + authorization;
// 发送HTTP请求
wx.request({
url: encodeURI('http://green.cn-shanghai.aliyuncs.com/green/image/scan?clientInfo=' + JSON.stringify(clientInfo)),
method:'POST',
data:requestBody,
header:requestHeaders,
success(res){
console.log("请求成功",res)
},
fail(err){
console.log("请求失败",err)
}
})
}
参考
Nodejs版参考示例下载
阿里云检测服务API参考
阿里云API 错误中心
单击下载内容安全第三方SDK(c#、c++、nodejs、python(3.5)、go)