uni-sec-check是DCloud封装的微信内容安全接口公共模块,需通过HBuilder X图形化安装、显式指定provider='mp-weixin'、传入context.requestId初始化,支持文本/图片/音视频审核,免费且全端兼容。

直接用 uni-sec-check 模块,别自己封装微信原生接口——它已经帮你处理了 access_token 刷新、错误码映射、多端兼容这些坑,自己调 wx.openApi.security.msgSecCheck 或拼 URL 调用,90% 的失败都出在 token 过期或签名错误上。
uni-sec-check 怎么装和初始化才不报错
常见错误是云函数部署后 require('uni-sec-check') 报 Module not found,或者初始化时提示 provider is required:
- 必须通过 HBuilder X 的「管理公共模块依赖」安装,不能
npm install—— uniCloud 公共模块只支持图形化方式引入 -
provider必须显式写成'mp-weixin',哪怕你只跑小程序;填'wx'或留空都会初始化失败 -
requestId在云函数里必须传context.requestId,前端调用云对象则用this.getUniCloudRequestId(),漏掉会导致审核结果无法关联请求链路 - 测试时先打印
UniSecCheck.version,输出为空说明模块根本没加载成功
文本审核 textSecCheck 的参数怎么填才不出 87014 误判
textSecCheck 返回 errCode: 87014 不代表一定违规,而是“平台判定为违法违规”,但微信的策略会动态收紧,比如“预约”“骨干”“领导”都可能被误标:
-
content字段必须是纯字符串,不能带 HTML 标签或富文本 JSON,否则可能因解析异常触发误判 -
scene建议按场景设值:1(用户资料)、2(评论/帖子)、3(群聊)——不同场景敏感词库权重不同 -
version推荐固定用2,version: 1已逐步弃用,且不支持部分新词库 - 如果业务允许,对
checkRes.result.suggestion === 'review'的内容走人工复核,别直接拦截——微信返回suggestion: 'review'表示“不确定,建议人工看”,不是“有问题”
图片审核 imgSecCheck 为什么总卡在 base64 转换或上传失败
imgSecCheck 是异步回调模式,前端不能等它“立刻返回结果”,常见卡点都在文件读取和传输环节:
- 前端用
uni.chooseImage拿到tempFilePaths[0]后,必须用uni.getFileSystemManager().readFile读成 base64,不能用uni.canvasToTempFilePath或其它方式生成路径——只有临时路径能被正确读取 - base64 字符串要剔除
data:image/png;base64,前缀,只传纯 base64 数据,否则云函数解码失败 - 云函数里调
imgSecCheck时,media参数必须是 Buffer 类型,不是字符串,需用Buffer.from(base64Str, 'base64')转换 - 单图限制 1MB,压缩图片时别只改宽高,要用
quality: 80控制体积,否则超限直接返回errCode: 41005(media data missing)
真正麻烦的是异步回调的可靠性——微信不会保证 100% 推送结果,网络抖动或云函数超时都可能导致回调丢失。上线前必须加一层「轮询兜底」:云函数记录待审核图片 ID 和时间戳,前端定时查状态,超过 30 秒没回调就主动拉一次结果。



















