实战笔记:uniapp开发小程序云函数
在使用uniapp结合云开发实战过程中踩了不少坑,接下来准备用一个系列来记录这些爬坑过程,方便团队成员学习和日后查找。社区里各位大佬如果有更好的解决方案,希望多多指教,我们是一个追求进步的团队。 项目中我们经常会希望用户上传图片和填写一些文本信息,为了防止部分应用内出现违法违规内容。我们需要对这些内容进行安全检测。微信也很贴心的为我们提供相应的接口。但在uniapp中无法直接调用这些服务,需要稍作改动 1、在项目根目录创建wxcloudfunctions文件夹(可以是任意名字) [图片] 2、定义云函数路径 (打开项目根目录下manifest.json) [图片] 3、在wxcloudfunctions创建security 新建config.json,index.js, package.json三个文件 config.json配置相应接口权限 {
"permissions": {
"openapi": [
"security.msgSecCheck",
"security.imgSecCheck"
]
}
}
package.json {
"name": "security",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"wx-server-sdk": "~2.3.2"
}
}
index,js const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
try {
let result = {};
switch (event.action) {
case 'msgSecCheck':
//文本校验
result = await cloud.openapi.security.msgSecCheck({ content: event.content });
break;
case 'imgSecCheck':
//图片校验
result = await cloud.openapi.security.imgSecCheck({
media: {
contentType: 'image/jpg',
value: Buffer.from(event.content)
}
});
break;
default:
result = {
code: 403,
msg: '非法访问'
}
break;
}
if (result && result.errCode.toString() === '87014') {
return {
code: 300,
msg: '内容含有违法违规内容',
data: result
}
} else {
return {
code: 200,
msg: 'ok',
data: result
}
}
} catch (err) {
let logs = {
event,
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
}
return {
code: 400,
msg: '调用security接口异常',
log: logs,
data: err
}
}
}
4、使用npm安装copy-webpack-plugin模块 npm install -save copy-webpack-plugin
5、开始编译,编译完成后,前往微信开发者工具 [图片] 上传并部署,此时就可以测试云函数了 调用示例 let contents = JSON.stringify(content);
wx.cloud.init()
wx.cloud.callFunction({
name: 'security',
data: {
"action": 'msgSecCheck',
"content": contents
}
}).then(res => {
if (res.result.code == 300) {
uni.showModal({
title: "温馨提示",
content: "你所输入的内容可能含有违法违规内容,不支持进行下一步操作"
})
} else {
//写入数据库
}
})
接口文档 图片检测 https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/sec-check/security.imgSecCheck.html 【注意:单个 appId 调用上限为 2000 次/分钟,200,000 次/天(图片大小限制:1M)】 文本检测 https://https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/sec-check/security.msgSecCheck.html