最近做一個帶圖片和文字發(fā)布的微信小程序逛揩,當(dāng)時心里犯嘀咕柠傍,沒有自我審查估摸著上不了。果不其然微信小程序提交代碼審核的時候辩稽,審核不通過惧笛,提示如下:為避免您的小程序被濫用,請你完善內(nèi)容審核機制逞泄,如調(diào)用小程序內(nèi)容安全API患整,或使用其他技術(shù)、人工審核手段喷众,過濾色情各谚、違法等有害信息,保障發(fā)布內(nèi)容的安全侮腹。
得嘲碧,去到后臺一看,審核員測試了一個詞xxx
給顯示出來了父阻,直接導(dǎo)致小程序不通過愈涩。
好在提示給了解決方案,因此這里做一下記錄加矛。
調(diào)用小程序內(nèi)容安全API
還挺全履婉,我主要用到了圖片和文字審查,所以對security.imgSecCheck
和security.msgSecCheck
的使用做記錄斟览。
開通云開發(fā)
在微信開發(fā)者工具打開你的小程序工程毁腿,點擊“云開發(fā)”菜單進去,之前沒開的按照提示填寫云開發(fā)環(huán)境名稱就好。
創(chuàng)建云函數(shù)
在你小程序工程的app.js
同級目錄下創(chuàng)建一個文件夾functions
來存放云函數(shù)
并在project.config.json
中配置"cloudfunctionRoot": "functions/",
{
"description": "項目配置文件",
"cloudfunctionRoot": "functions/",
"packOptions": {
"ignore": []
}, ...
.......
編譯一下已烤,可以看到functions
文件夾有變化后面加上了你之前創(chuàng)建的環(huán)境名鸠窗。右鍵functions
文件夾喚出菜單新建Node.js
云函數(shù)
我這里創(chuàng)建了一個名稱叫ContentCheck
的云函數(shù),調(diào)用security.imgSecCheck
和security.msgSecCheck
需要聲明權(quán)限胯究,需要配置一個config.json
文件稍计,如果目錄文件中沒有config.json
,需要自己建一個裕循。
config.json的配置如下:
{
"permissions": {
"openapi": [
"security.msgSecCheck",
"security.imgSecCheck"
]
}
}
ContentCheck云函數(shù)的目錄結(jié)構(gòu)如下:
├─checkContent
│ config.json //云調(diào)用的權(quán)限配置
│ index.js //云服務(wù)器node 入口文件
│ package.json // NPM包依賴
│ ...
編輯ContentCheck
云函數(shù)目錄下的index.js
文件
// 云函數(shù)入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函數(shù)入口函數(shù)
exports.main = async(event, context) => {
try {
let msgR = false;
let imageR = false;
// 檢查文本內(nèi)容是否違規(guī)
if (event.msg) {
msgR = await cloud.openapi.security.msgSecCheck({
content: event.msg
})
}
// 檢查圖像內(nèi)容是否違規(guī)
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
}
}
編輯完云函數(shù)之后臣嚣,右鍵ContentCheck
喚起菜單選擇 上傳并部署:云端安裝依賴
注意
使用微信小程序云函數(shù)開發(fā)本地需要實現(xiàn)安裝好Node.js環(huán)境,并配置好環(huán)境變量剥哑,之前新電腦沒裝Node.js環(huán)境導(dǎo)致上傳的云函數(shù)老是調(diào)用失敗硅则,解決辦法是安裝好Node.js就好了。
驗證Node.js是否安裝npm -v
和node -version
調(diào)用云函數(shù)
在app.js
初始化云環(huán)境株婴,參數(shù)env
可以在云開發(fā)的設(shè)置中可以看到當(dāng)前的環(huán)境ID
//app.js
App({
onLaunch: function () {
wx.cloud.init({
env: "manjaro-7l50h",
traceUser: true
})
...
},
})
-
檢查文字是否違規(guī)
// 調(diào)用ContentCheck云函數(shù)檢查文字是否違規(guī) 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: '文字違規(guī)', }) } } }) // 文字違規(guī)打印的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 }
-
檢查圖片是否違規(guī)
// 調(diào)用ContentCheck云函數(shù)檢查圖片是否違規(guī) 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: '圖片違規(guī)', }) } } }) // 圖片違規(guī)打印的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" } }