Moodle错误 - Web服务客户端 - 模块上下文中没有访问权限

时间:2017-01-06 18:49:40

标签: web-services rest moodle moodle-api

我在Moodle中有以下设置:

  • 我已启用网络服务
  • 我启用了REST协议
  • 我添加了一项名为grade的服务并启用了它
  • 我已将函数mod_assign_get_grades添加到服务
  • 我已将webservice用户指定为服务的授权用户
  • 我还为用户创建并分配了一个允许其余协议用户的角色
  • 我还为用户和服务创建了一个令牌

我已使用以下代码向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

据我所知,我已经指定了相应的功能和权限,并且不知道我哪里出错了?

1 个答案:

答案 0 :(得分:0)

看起来我创建的网络服务用户没有访问学生成绩的权限。使用我在使用moodle时创建的管理员帐户,我可以运行脚本并返回响应。