云调用报错 -604101 如何解决
在微信云开发中调用云调用接口(如 security.msgSecCheck、security.imgSecCheck 等)时,可能会遇到 -604101 错误码,提示 system error: error code: -604101。
问题现象
调用云调用相关接口时,返回如下错误:
{
"errCode": -604101,
"errMsg": "system error: error code: -604101"
}
或者完整日志类似:
Error: errCode: -604101 | errMsg: openapi.security.msgSecCheck:fail system error: error code: -604101
问题原因
云调用需要在云函数目录下的 config.json 文件中声明要使用的接口权限。如果没有正确配置权限,调用时会返回 -604101 错误。
解决方案
步骤一:创建或修改 config.json
在云函数目录下创建或修改 config.json 文件,添加需要调用的接口权限声明。
文件结构示例:
cloudfunctions/
└── myFunction/
├── index.js
├── package.json
└── config.json # 添加此文件
步骤二:配置接口权限
在 config.json 中的 permissions.openapi 字段声明需要使用的接口:
{
"permissions": {
"openapi": [
"security.msgSecCheck",
"security.imgSecCheck",
"security.mediaCheckAsync"
]
}
}
常用接口示例:
| 接口名称 | 用途 |
|---|---|
security.msgSecCheck | 文本内容安全检测 |
security.imgSecCheck | 图片内容安全检测 |
security.mediaCheckAsync | 异步媒体内容安全检测(推荐) |
templateMessage.send | 发送模板消息 |
subscribeMessage.send | 发送订阅消息 |
步骤三:重新上传云函数
使用微信开发者工具重新上传云函数,让权限配置生效。
步骤四:等待缓存生效
权限配置有约 10 分钟 的缓存时间。如果上传后仍然报错,请等待 10 分钟后再试。
完整示例
config.json:
{
"permissions": {
"openapi": [
"security.msgSecCheck"
]
}
}
index.js:
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })
exports.main = async (event, context) => {
try {
const result = await cloud.openapi.security.msgSecCheck({
content: event.content
})
return result
} catch (err) {
console.error(err)
return { errCode: err.errCode, errMsg: err.errMsg }
}
}
注意事项
permissions.openapi是一个字符串数组,每个元素是一个接口名称- 接口名称必须与官方文档中的接口名称完全一致
- 每次修改
config.json后都需要重新上传云函数 - 建议优先使用
security.mediaCheckAsync替代security.imgSecCheck
相似问题
- 云调用报错 -604101 怎么解决?
- 微信云开发调用 openapi 接口失败怎么办?
- security.msgSecCheck 返回 -604101 错误是什么原因?
- 云函数调用微信开放接口没有权限怎么处理?
- config.json 怎么配置云调用权限?
- 云调用权限配置在哪里设置?
- 上传云函数后权限多久生效?
- openapi 接口调用失败 system error 怎么解决?
- 云函数 permissions.openapi 怎么写?
- 微信云开发权限声明格式是什么?