我在 Moodle 中有以下设置:
- 我已启用 Web 服务
- 我已启用 REST 协议
- 我添加了一个名为 Grades 的服务并启用了它
- 我已将功能 mod_assign_get_grades 添加到服务中
- 我已将 Web 服务用户指定为该服务的授权用户
- 我还为用户创建并分配了一个角色,该角色将允许其余协议的用户
- 我还为用户和服务创建了一个令牌
我使用下面的代码向 API 发出请求:
/// SETUP - NEED TO BE CHANGED
$token = '068183c4c700bdcfe2b0bfe24a8043e2';
$domainname = 'http://localhost/Project/moodle';
$functionname = 'mod_assign_get_grades';
// REST RETURNED VALUES FORMAT
$restformat = 'xml'; //Also possible in Moodle 2.2 and later: 'json'
//Setting it to 'json' will fail all calls on earlier Moodle version
/// PARAMETERS - NEED TO BE CHANGED IF YOU CALL A DIFFERENT FUNCTION
$params = array('assignmentids' => array(1));
/// REST CALL
header('Content-Type: text/plain');
$serverurl = $domainname . '/webservice/rest/server.php'. '?wstoken=' . $token . '&wsfunction='.$functionname;
require_once('./curl.php');
$curl = new curl;
//if rest format == 'xml', then we do not add the param for backward compatibility with Moodle < 2.2
$restformat = ($restformat == 'json')?'&moodlewsrestformat=' . $restformat:'';
$resp = $curl->post($serverurl . $restformat, $params);
print_r($resp);
执行后我收到以下错误:
No access rights in module context
据我所知,我已经分配了适当的功能和权限,但不知道我哪里出错了?