跳到主要内容

PERMISSION_DENIED

遇到错误?使用 AI 工具协助排查

错误原因

该错误表示当前操作因权限不足而被拒绝,通常在以下两种情况下出现:

  1. 权限配置不正确:当前用户或客户端没有执行该操作的权限,需要检查对应模块的安全规则配置
  2. 未登录访问限制:在未登录状态下调用云开发资源,但环境未开启未登录访问权限

解决方案

调用云函数报错

当调用云函数时出现 PERMISSION_DENIED 错误,请按照以下步骤检查权限配置:

云开发控制台检查

  1. 前往 云开发平台/云函数
  2. 点击「权限控制」按钮进入配置页面
  3. 检查目标云函数的安全规则配置,确保 invoke 规则满足以下条件之一:
    • 设置为 true(允许所有人调用)
    • 设置为 "auth != null"(仅允许已登录用户调用)
    • 设置其他符合业务需求的表达式

💡 提示:云函数安全规则详细说明请参考 云函数安全规则 文档。

微信开发者工具检查

如果您正在开发小程序,可以通过以下路径检查权限:

  1. 打开微信开发者工具
  2. 进入「云开发控制台」
  3. 点击「云函数」→「云函数权限」
  4. 检查并配置对应函数的权限设置

小程序开发者工具-云开发控制台-云函数-云函数权限

未登录场景调用资源报错

未登录模式指的是用户未进行身份认证(没有openid)的情况下访问云开发资源,主要包括以下场景:

  • 单页模式:小程序或小游戏通过分享到朋友圈后被打开
  • Web 未登录模式:Web 应用中未执行登录操作的访问

开启未登录访问权限

默认情况下,云开发资源 不允许未登录访问。如果您的业务需要支持未登录访问,需要进行以下配置:

步骤 1:开启环境级未登录访问

  1. 打开微信开发者工具
  2. 进入「云开发控制台」→「设置」→「权限设置」
  3. 开启「允许未登录访问」选项

小程序开发者工具-云开发控制台-设置-权限设置

步骤 2:配置资源安全规则

⚠️ 注意:开启环境级未登录访问后,还需要为各个资源(云函数、数据库、文件存储)分别配置安全规则才能真正生效。

未登录模式下,客户端权限控制 必须使用安全规则,具体要求:

  • 云函数:在权限设置中选择「安全规则」并配置相应的访问规则
  • 数据库:在权限设置中选择「安全规则」并配置数据访问规则
  • 文件存储:在权限设置中选择「安全规则」并配置文件访问规则

安全规则配置说明

在安全规则中,未登录用户的 auth 字段为 null,您可以使用此特征来识别和控制未登录用户的访问:

{
"*": {
"invoke": "auth == null" // 仅允许未登录用户访问
}
}

或者同时允许登录和未登录用户:

{
"*": {
"invoke": true // 允许所有用户访问
}
}

💡 提示:出于安全考虑,建议根据实际业务需求设置最小权限原则,避免过度开放资源访问权限。