小程序开发的内容安全审核
关于小程序没有调用内容审核导致不通过的问题
然后进行了相应的查找最终看到了云开发的方法 现在讲述的我的云开发初探
调用小程序内容安全API
还挺全,我主要用到了图片和文字审查,所以对security.imgSecCheck
和security.msgSecCheck
的使用做记录。
开通云开发
在微信开发者工具打开你的小程序工程,点击“云开发”菜单进去,之前没开的按照提示填写云开发环境名称就好。
image
创建云函数
在你小程序工程的app.js
同级目录下创建一个文件夹functions
来存放云函数
image.png
并在project.config.json
中配置"cloudfunctionRoot": "functions/",
{
"description": "项目配置文件",
"cloudfunctionRoot": "functions/",
"packOptions": {
"ignore": []
}, ...
.......
编译一下,可以看到functions
文件夹有变化后面加上了你之前创建的环境名。右键functions
文件夹唤出菜单新建Node.js
云函数
image
我这里创建了一个名称叫ContentCheck
的云函数,调用security.imgSecCheck
和security.msgSecCheck
需要声明权限,需要配置一个config.json
文件,如果目录文件中没有config.json
,需要自己建一个。
config.json的配置如下:
{
"permissions": {
"openapi": [
"security.msgSecCheck",
"security.imgSecCheck"
]
}
}
ContentCheck云函数的目录结构如下:
├─checkContent
│ config.json //云调用的权限配置
│ index.js //云服务器node 入口文件
│ package.json // NPM包依赖
│ ...
编辑ContentCheck
云函数目录下的index.js
文件
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async(event, context) => {
try {
let msgR = false;
let imageR = false;
// 检查文本内容是否违规
if (event.msg) {
msgR = await cloud.openapi.security.msgSecCheck({
content: event.msg
})
}
// 检查图像内容是否违规
if (event.img) {
imageR = await cloud.openapi.security.imgSecCheck({
media: {
header: {
'Content-Type': 'application/octet-stream'
},
contentType: 'image/png',
value: Buffer.from(event.img)
}
})
}
return {
msgR,
imageR
};
} catch (e) {
return e
}
}
编辑完云函数之后,右键ContentCheck
唤起菜单选择 上传并部署:云端安装依赖
注意
使用微信小程序云函数开发本地需要实现安装好Node.js环境,并配置好环境变量,之前新电脑没装Node.js环境导致上传的云函数老是调用失败,解决办法是安装好Node.js就好了。
验证Node.js是否安装npm -v
和node -version
调用云函数
在app.js
初始化云环境,参数env
可以在云开发的设置中可以看到当前的环境ID
//app.js
App({
onLaunch: function () {
wx.cloud.init({
env: "manjaro-7l50h",
traceUser: true
})
...
},
})
1.检查文字是否违规
// 调用ContentCheck云函数检查文字是否违规
wx.cloud.callFunction({
name: 'ContentCheck',
data: {
msg: _this.data.msg,
},
success(res) {
console.log(res.result)
if (res.result.msgR.errCode == 87014) {
wx.showToast({
title: '文字违规',
})
}
}
})
// 文字违规打印的console.log(res.result)
{
msgR: {
errCode: 87014,
errMsg: "openapi.security.msgSecCheck:fail risky content hint: [cSp9ka06218622]"
},
imageR: false
}
// 文字正常打印的console.log(res.result)
{
msgR: {
errCode: 0,
errMsg: "openapi.security.msgSecCheck:ok"
},
imageR: false
}
2.检查图片是否违规
// 调用ContentCheck云函数检查图片是否违规
wx.cloud.callFunction({
name: 'ContentCheck',
data: {
img: _this.data.img
},
success(res) {
console.log(res.result)
if(res.result.imageR.errCode == 87014){
wx.showToast({
title: '图片违规',
})
}
}
})
// 图片违规打印的console.log(res.result)
{
msgR: false,
imageR: {
errCode: 87014,
errMsg: "openapi.security.imgSecCheck:fail risky content hint: [LGrV.a05623955]"
}
}
// 图片正常打印的console.log(res.result)
{
msgR: false,
imageR: {
errCode: 0,
errMsg: "openapi.security.imgSecCheck:ok"
}
}