0

我在 Moodle 3.0.5 上配置了 REST 网络服务以使用core_course_get_courses应该返回包含所有可用课程基本信息的响应的功能。

这是我一直在使用的网址:

https://example.com/webservice/rest/server.php?wstoken=713898e3fcaf9ead2218eb7565993230&wsfunction=core_course_get_courses&moodlewsrestformat=json

而且,这就是我得到的:

{
  "exception": "required_capability_exception",
  "errorcode": "nopermissions",
  "message": "Sorry, but you do not currently have permissions to do that (View courses without participation)"
}

有问题的权限从一开始就设置好了,即:

moodle/course:view

角色权限设置页面

它没有任何效果。我什至允许一切,几百个权限只是为了看看它是否会起作用,但仍然没有效果。

我使用了具有相同服务的另一个功能,它确实有效!:

core_enrol_get_enrolled_users

另一个重要的事实是,该core_course_get_courses功能可以在全新安装 Moodle 的本地开发机器上运行。生产环境安装了 50 个附加插件。调试,“开发人员的额外 Moodle 调试消息”已启用,但没有显示错误。

这可能是什么原因?

PS开发。机器是 Ubuntu 14.04

4

3 回答 3

0

我最近遇到了这个问题,发现即使用户具有所需的系统级访问权限,用户也作为没有该特定课程所需访问权限的学生注册了一门课程。结果,当进程在构建完整课程列表时进入该课程时引发错误。

我们删除了学生注册,然后能够毫无错误地提取完整的课程列表。

我希望这对其他遇到此问题的人有所帮助!

于 2021-08-25T14:17:33.750 回答
0

拥有令牌的用户是否有权访问该功能?

通过站点管理员 -> 插件 -> Web 服务 -> 管理令牌找到具有令牌的用户

或直接到/admin/settings.php?section=webservicetokens

然后通过站点管理员->用户->权限->检查系统权限检查用户的能力

或直接到/admin/roles/check.php?contextid=1

如果看起来没问题,请检查该用户是否在该课程的其他用户列表中 - https://docs.moodle.org/31/en/Other_users

转到一门课程,然后是课程管理员 -> 用户 -> 其他用户

或直接到/enrol/otherusers.php?id=#(#=courseid)

该用户在该列表中吗?

于 2016-08-30T12:25:54.117 回答
-1

请检查此功能所需的功能,然后转到 site Adminitration->users->permission->define

moodle/admin/roles/manage.php 一个角色然后显示角色列表

moodle/admin/roles/define.php?action=edit&roleid=9

在此处输入图像描述

允许能力

于 2017-11-13T07:39:43.043 回答