微信小程序使用云函数通过security.msgSecCheck方法验证字符串中是否存在铭感词汇
背景
我自己搞了一个婚礼邀请函,自己的,哈哈哈;里面有一个留言的功能,之前没注意上传被打回来了,
还被打回了两次,我看了微信文档,有两种方式验证字符串,一种是通过接口访问,这种方式我也试过,有一点麻烦,需要先用小程序的appid和secret去获取一个access_token,然后再去验证;第二种方式就是通过云函数,因为之前没有搞过云函数,我搞了很久,终于搞好了,特此记录一下,一是为了给同行一个示例和提醒,二是自己也记录一下,万一下次又用到了呢,好记性不如烂笔头嘛。
言归正传!
创建云函数
1.在根目录中创建云函数文件夹
我创建的名称叫 cloudfunction
2.配置云函数路径
在项目最下面的项目配置文件(project.config.json)中加上刚才生成的根目录
“cloudfunctionRoot”: “cloudfunction/”,
然后ctrl+s保存就会发现刚才的文件夹上面出现一朵云了。
3.创建Node.js云函数
右击刚才创建的文件夹cloudfunction,选择“新建Node.js云函数”,这个时候会输入一个名字,这个名字就是你云函数的函数名称,不要写Node.js,千万不要写Node.js,我第一次就是写了这个名字,上传函数的时候总是报FunctionName不符合规范,我改了很多地方最后才发现是这里的问题,切记。
这里我的云函数名称是checkMsg
说明一下哈,我磨掉的那个是后面安装got和wx-server-sdk依赖之后才会有的文件
配置security.msgSecCheck方法
1.在刚才生成的云函数文件config.json中添加security.msgSecCheck方法
2.在app.json中加上security.msgSecCheck方法(为什么加我也不知道哈)
“permission”: {
“openapi”:[
“security.msgSecCheck”
]
}
3.编写云函数方法
在云函数文件中index.js中
那个云环境ID可以在云开发中查看
方法调用
wx.cloud.callFunction({
name:"checkMsg",//云函数名称
data:{
msg:msg//需要检查的字符串
},success(res){//检查通过
console.log("检查通过");
},fail(res){//检查未通过
console.log("检查未通过");
wx.showToast({
title: '您的留言中存在敏感词汇,请改正后再提交!',
icon: 'none',
duration: 3000
})
}
})
这里有个地方需要注意一下,如果只是这样执行的话会报错没有初始化,
需要在app.js中对此进行初始化
//初始化 字符串检查云函数
wx.cloud.init({
env:"qk-wx-json-6gf5xjj72d85195e",
traceUser:true
})
env还是填写云环境的ID
到了这里还有最很重要的一步,上传云函数
上传云函数
使用云函数需要有got和wx-server-sdk依赖,而按照依赖需要用到node.js,说实话我也还没弄明白这是啥玩意,我照着安装就好了。
安装node.js
node.js下载网址:https://nodejs.org/en/download/,我电脑是win7,从官网下载的始终安装不上,
我找了很久才找到了可以win7安装的https://nodejs.org/dist/v9.7.1/
安装成功之后进入cmd测试一下 输入 npm -v 或者node -v 会出现版本号说明安装成功了。
安装wx-server-sdk依赖
在云函数上右键,最下方在终端打开
输入 npm install --save wx-server-sdk@latest 回车慢慢等着安装完成即可
安装got依赖
在云函数上右键,最下方在终端打开
输入 npm install got -save 回车慢慢等着安装完成即可
安装依赖完成之后在云函数中会出现package-lock.json这个文件
然后在package.json中会出现对应依赖的版本号
上传
右击云函数名称,上传并部署:所有文件,上传完成就可以了
这里说明一下,如果没有安装依赖就上传的话,会出现一下错误: