我在Moodle 3.0.5上配置了REST webservice以使用函数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调试消息”已启用,但没有显示错误。
原因可能是什么?
P.S。开发。机器是Ubuntu 14.04
答案 0 :(得分:0)
拥有令牌的用户是否可以访问该功能?
通过网站管理员找到具有令牌的用户 - >插件 - >网络服务 - >管理令牌
或直接发送到/admin/settings.php?section=webservicetokens
然后通过网站管理员检查用户功能 - >用户 - >权限 - >检查系统权限
或直接发送到/admin/roles/check.php?contextid=1
如果看起来不错,请检查用户是否在该课程的其他用户列表中 - https://docs.moodle.org/31/en/Other_users
转到课程,然后转到课程管理员 - >用户 - >其他用户
或直接发送到/enrol/otherusers.php?id=#
(#= courseid)
用户是否在该列表中?
答案 1 :(得分:-1)