最近做一个带图片和文字发布的微信小程序,当时心里犯嘀咕,没有自我审查估摸着上不了。果不其然微信小程序提交代码审核的时候,审核不通过,提示如下:为避免您的小程序被滥用,请你完善内容审核机制,如调用小程序内容安全API,或使用其他技术、人工审核手段,过滤色情、违法等有害信息,保障发布内容的安全。
得,去到后台一看,审核员测试了一个词xxx
给显示出来了,直接导致小程序不通过。
image
好在提示给了解决方案,因此这里做一下记录。
调用小程序内容安全API
还挺全,我主要用到了图片和文字审查,所以对security.imgSecCheck
和security.msgSecCheck
的使用做记录。
image
开通云开发
在微信开发者工具打开你的小程序工程,点击“云开发”菜单进去,之前没开的按照提示填写云开发环境名称就好。
image
创建云函数
在你小程序工程的app.js
同级目录下创建一个文件夹functions
来存放云函数
image.png
并在project.config.json
中配置"cloudfunctionRoot": "functions/",
{ "description": "项目配置文件", "cloudfunctionRoot": "functions/", "packOptions": { "ignore": [] }, ... .......
image
编译一下,可以看到functions
文件夹有变化后面加上了你之前创建的环境名。右键functions
文件夹唤出菜单新建Node.js
云函数
image
我这里创建了一个名称叫ContentCheck
的云函数,调用security.imgSecCheck
和security.msgSecCheck
需要声明权限,需要配置一个config.json
文件,如果目录文件中没有config.json
,需要自己建一个。
image.png
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
唤起菜单选择 上传并部署:云端安装依赖
image
注意
使用微信小程序云函数开发本地需要实现安装好Node.js环境,并配置好环境变量,之前新电脑没装Node.js环境导致上传的云函数老是调用失败,解决办法是安装好Node.js就好了。
验证Node.js是否安装npm -v
和node -version
image
调用云函数
在app.js
初始化云环境,参数env
可以在云开发的设置中可以看到当前的环境ID
//app.jsApp({ onLaunch: function () { wx.cloud.init({ env: "manjaro-7l50h", traceUser: true }) ... },})
image
检查文字是否违规
// 调用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}
检查图片是否违规
// 调用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" }}
作者:97690CE50CC872D
链接:https://www.jianshu.com/p/e30e899c466a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
请登录后评论~