最稳妥方案是用 uni-sec-check 模块 + 云对象封装,因其不依赖第三方插件、不暴露密钥、能过微信审核;手写 HTTP 请求易漏 openid/scene/version 等强制参数,导致 errcode: 40001/47001/87014 等错误。

直接用 uni-sec-check 模块 + 云对象封装是最稳妥的方案,不依赖第三方插件、不暴露密钥、能过微信审核。自己手写 HTTP 请求容易漏掉 openid、scene、version 等强制参数,一调就返回 errcode: 40001 或 47001。
为什么不能只用 uniCloud.httpclient.request 直接调微信接口
微信内容安全接口(/wxa/msg_sec_check)V2 版本强制要求传 openid 和 scene,且必须是当前用户的小程序 openid;V1 版本虽可绕过,但 2025 年起多数社交类目已拒绝 V1 审核。直接发请求会卡在以下几处:
-
errcode: 40001:access_token 过期或无效(没做自动刷新逻辑) -
errcode: 47001:JSON 格式错误——常见于没设contentType: 'json'或 data 是字符串而非对象 -
errcode: 87014:缺失openid(V2 必填,且需通过uni-id-common获取) - 返回
errcode: 0却提示“含有敏感词”:其实是检测通过,但业务代码把errcode === 0当成失败处理了
正确接入 uni-sec-check 的三个硬性前提
缺一不可,否则云函数跑不通:
- 项目里已安装并启用
uni-id-common云模块(用于获取当前用户的openid) - 已在
uni-config-center中配置好小程序的appid和appsecret(uni-sec-check内部靠它自动拉取access_token) - 云对象或云函数中显式引入
uni-sec-check,不能只靠 npm install 后 import —— uniCloud 要求模块必须被识别为“公共模块”
示例初始化写法:
const UniSecCheck = require('uni-sec-check')
const uniSecCheck = new UniSecCheck({
provider: 'mp-weixin',
requestId: this.getUniCloudRequestId() // 云对象内必须用 this.getUniCloudRequestId()
})
checkText 调用时必须传哪些参数
V2 接口字段严格,少一个就会报错:
-
content:待检测文本,最大 500KB,超长会被截断或报错errcode: 41007 -
openid:必须是当前用户真实 openid,从uni-id-common的uniID.getCurrentUserInfo()获取,不能写死或 mock -
scene:整型,常见值为1(用户主动提交)、2(后台代检)、3(客服消息),微信审核时会核对场景合理性 -
version:固定填2,填"2"字符串会失败
错误示范:uniSecCheck.textSecCheck({ content: '测试', scene: '2' }) → 报 errcode: 40004
正确写法:
const userInfo = await uniID.getCurrentUserInfo()
const res = await uniSecCheck.textSecCheck({
content: this.inputText,
openid: userInfo.openid,
scene: 2,
version: 2
})
本地开发调试时最容易忽略的点
真机调试和云函数日志都正常,但上线后频繁报 errcode: 40001,问题往往出在:
- 本地运行时
uni-config-center配置未同步到阿里云环境(HBuilderX 右键“上传”配置中心,不是只上传云对象) - 云函数用了旧版
uni-sec-check(v1.2.0 以下不支持 V2 接口),检查node_modules/uni-sec-check/package.json的 version - 小程序基础库版本低于 2.26.0(V2 接口最低要求),需在
manifest.json中设置minPlatformVersion - 用户未授权登录(
uniID.getCurrentUserInfo()返回 null),导致 openid 为空,应加判空并提示重新登录
真正上线前,务必用真实用户、真实 openid、真实小程序环境走一遍全流程——模拟数据骗不过微信审核系统。


















