2023-02-19 如何在 uniCloud 中使用 uni-sec-check 实现微信内容安全检测
温馨提示:本文使用 New Bing 润色。
参考链接:
uniCloud:https://uniapp.dcloud.net.cn/uniCloud/
uni-sec-check:https://ext.dcloud.net.cn/plugin?id=5460
微信内容安全:https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/sec-center/sec-check/msgSecCheck.html
前言
为了让“草梅定时推送”这款应用更加安全可靠,我需要对用户输入的内容进行审核。在网上找了很多方案后,我选择了 uniCloud 的 uni-sec-check 模块。这篇文章将分享我如何使用这个模块,并给出一些实用的技巧。
如何安装 uni-sec-check 模块
要使用 uniCloud 中的内容安全检测功能,我们需要先安装两个模块:uni-open-brige 和 uni-seck-check。这两个模块都可以通过 HBuilderX 导入插件功能来快速添加到项目中。
1.安装 uni-open-brige 模块
这个模块是用来连接微信开放平台和腾讯云服务的桥梁。我们可以参考官方文档来进行安装。注意,在导入插件时可能会出现文件冲突的提示,请仔细检查并保留已经存在的文件。
2.安装 uni-seck-check 模块
这个模块是用来调用微信内容安全检测接口的工具。我们可以参考官方文档来进行安装。同样,在导入插件时要注意文件冲突问题,并且要在两个配置文件中添加相关信息:
uni-config-center/uni-id/config.json
uniconfig-center/uni-open-brige/config.json
如何使用 uni-seck-check 模块
在完成了上述两个模块的安装和配置后,我们就可以开始使用内容安全检测功能了。我们只需要在代码中引入 uni-sec-check
模块,并调用其中的方法即可。例如:
但这里有一些小技巧,例如在云函数 URL 化之后,获取不到 APPID 该怎么办?请参考以下代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| 'use strict'; const UniSecCheck = require('uni-sec-check')
function requestDataFormat(event, context) { if (context.SOURCE === 'http') { if (event.httpMethod === 'GET') { return event.queryStringParameters } if (event.httpMethod === 'POST') { let body = event.body let data = null if (event.isBase64Encoded) { body = Buffer.from(body).toString() } try { data = JSON.parse(body) } catch (e) { console.error(e) } return data } return null } return event }
exports.main = async function(event, context) { const data = requestDataFormat(event, context)
if (!data) { return { errCode: 'the-passed-in-parameter-is-null', errMsg: '传入的参数为空', } } if (!context.APPID) { context.APPID = "__UNI__XXXX" } const uniSecCheck = new UniSecCheck({ provider: 'mp-weixin', requestId: context.requestId }) if(data.type === 'image' || data.image){ const imgSecCheckRes = await uniSecCheck.imgSecCheck({ scene: 1, version: 1, ...data }) console.log(imgSecCheckRes) return imgSecCheckRes } const textSecCheckRes = await uniSecCheck.textSecCheck({ scene: 1, version: 1, ...data }) console.log(textSecCheckRes) return textSecCheckRes }
|
在这里,假定提交的数据格式如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| export interface MsgSecCheckData {
type?: 'text' | 'image'
content?: string
image?: string
openid?: string
scene?: 1 | 2 | 3 | 4
version?: 1 | 2 }
|
请自行参考使用~
PS:由于音频检测为 2.0 接口,需要提交 openid,不是很方便,所以未在代码中集成,如有需要可以自行集成。
总结
虽然使用了 uniCloud 的 uni-sec-check 模块进行内容检测,但本质上还是调用了微信的内容安全识别接口。如果你不想依赖 uniCloud ,也可以直接调用微信的接口,效果一样。不过,如果你的应用已经使用了 uniCloud ,那么通过 uni-sec-check 模块会更方便。
本文作者:草梅友仁
本文地址: https://blog.cmyr.ltd/archives/3b949dba.html
版权声明:转载请注明出处!