Skip to main content

云调用报错 -604101 如何解决

在微信云开发中调用云调用接口(如 security.msgSecChecksecurity.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 }
}
}

注意事项

  1. permissions.openapi 是一个字符串数组,每个元素是一个接口名称
  2. 接口名称必须与官方文档中的接口名称完全一致
  3. 每次修改 config.json 后都需要重新上传云函数
  4. 建议优先使用 security.mediaCheckAsync 替代 security.imgSecCheck

相似问题

  1. 云调用报错 -604101 怎么解决?
  2. 微信云开发调用 openapi 接口失败怎么办?
  3. security.msgSecCheck 返回 -604101 错误是什么原因?
  4. 云函数调用微信开放接口没有权限怎么处理?
  5. config.json 怎么配置云调用权限?
  6. 云调用权限配置在哪里设置?
  7. 上传云函数后权限多久生效?
  8. openapi 接口调用失败 system error 怎么解决?
  9. 云函数 permissions.openapi 怎么写?
  10. 微信云开发权限声明格式是什么?

相关文档