You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Server to Server OAuth应用调用Zoom GraphQL查询云录制列表时遭遇权限范围(Scope)错误

Server to Server OAuth应用调用Zoom GraphQL查询云录制列表时遭遇权限范围(Scope)错误

我太懂你这种处境了——明明配置了云录制相关的权限,用Server to Server OAuth拿到了token,可调用Zoom GraphQL查录制列表时还是跳权限错误,官方渠道求助无门,确实让人憋屈。

咱们来一步步捋清楚问题出在哪,以及怎么解决:

先搞懂核心问题:Zoom GraphQL和REST API的Scope不一一对应

你提到token里有cloud_recording:read:list_user_recordings:admin这个scope,但没有userMeetingRecordings相关权限——这是因为这个list_user_recordings是REST API的细分权限,而GraphQL的字段权限逻辑和REST不一样,普通用户视角的userMeetingRecordings字段需要的是专门的scope,但作为管理员级应用,其实我们完全可以绕开这个限制。

解决步骤1:检查并调整应用的Scope配置

  • 先给你的Account-level Server to Server应用添加上cloud_recording:read:admin这个宽泛的管理员级云录制读取权限,别只用细分的list_user_recordings那个。GraphQL对管理员视角的查询,更认这种全量的管理权限,而不是细分的REST专用scope。
  • 另外一定要加上user:read:admin这个scope,因为要读取用户的录制列表,GraphQL需要先获取用户的基本信息权限,这个管理员级的用户读取权限是基础。

解决步骤2:换管理员视角的GraphQL查询结构

既然是Server to Server的管理员应用,别再用普通用户的userMeetingRecordings字段了,直接从账户层面查询录制列表,这样更符合你的权限身份,也能避开用户字段的scope限制。

给你个简单的查询示例:

query GetAccountCloudRecordings {
  account {
    cloudRecordings(limit: 20) {
      edges {
        node {
          id
          topic
          startTime
          duration
        }
      }
    }
  }
}

这个查询只需要cloud_recording:read:admin和user:read:admin这两个scope就能授权,完全不需要依赖userMeetingRecordings相关的权限。

解决步骤3:重新生成并验证Access Token

更新完scope后,一定要重新生成access token,旧的token不会自动带上新添加的权限。生成新token后,你可以用本地的JWT解析工具看看里面的scope列表,确认cloud_recording:read:admin和user:read:admin已经在里面了。

解决步骤4:确认应用权限已生效

有时候添加scope后,Zoom的账户后台可能需要你重新确认应用的权限状态,去你的应用管理页面看看,确保所有添加的scope都显示为已授权状态,没有处于待审核或者未激活的情况。

我之前也踩过Zoom API和GraphQL权限不匹配的坑,他们的文档经常没讲清楚这些细节,按照上面的步骤调整后,应该就能正常查询录制列表了。

备注:内容来源于stack exchange,提问作者Radek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 12:49:51