Moodle Web服务脚本无法注册用户

时间:2014-05-22 20:46:42

标签: rest moodle

我正在尝试通过Moodle的REST API添加用户,然后使用以下Ruby脚本将该用户注册到课程中(为了便于阅读,使用换行符):

require 'httparty'
# Credentials
ws_url      = 'https://subdomain.domain.com/webservice/rest/server.php?wstoken='
token       = '123abc456def7890ghijklmnop123rst'
ws_function_create  = 'core_user_create_users'
ws_function_enrol   = 'enrol_manual_enrol_users'
rest_format = 'json'


user_data = "users[0][username]=test_user&users[0][auth]=googleoauth2
            &users[0][password]=Password01!&users[0][firstname]=Test
            &users[0][lastname]=User&users[0][email]=test@example.com
            &users[0][idnumber]=000001"

user_response = HTTParty.post(ws_url + token 
                              + '&wsfunction=' + ws_function_create 
                              + '&moodlewsrestformat=' + rest_format
                             , :body => user_data )
puts user_response.parsed_response


enrol_data = "enrolments[0][roleid]=5
             &enrolments[0][userid]=#{user_response.parsed_response[0]['id']}
             &enrolments[0][courseid]=2"

enrol_response = HTTParty.post(ws_url + token 
                               + '&wsfunction=' + ws_function_enrol 
                               + '&moodlewsrestformat=' + rest_format
                              , :body => enrol_data )
puts enrol_response

运行此代码会产生以下输出:

{"id"=>1411, "username"=>"test_user"}

{"exception"=>"moodle_exception", "errorcode"=>"wsnoinstance", 
 "message"=>"Manual enrolment plugin instance doesn't exist or is disabled for the course (id = {$a->courseid})"}

用户添加工作正常 - 我可以在访问Moodle网站时看到它们,因此我认为Web服务API设置正确。设置API后,我创建了一个“外部服务”。我添加了两个函数core_user_create_usersenrol_manual_enrol_users,以及' API_user'角色(分配给web_services用户)允许注册用户,使用REST API和创建用户。

此外,如果我尝试在没有enrolments[0][roleid]=5(我之前遇到过问题)的情况下发帖,我会回来{"exception"=>"invalid_parameter_exception", "errorcode"=>"invalidparameter", "message"=>"Invalid parameter value detected"},所以看起来我正好通过我当前的错误 - 我只是不知道如何解决。

Moodle文档似乎有很大的不同,通常不存在(或者我在谷歌很糟糕),希望有人在这里可能知道如何解决。

1 个答案:

答案 0 :(得分:3)

原来这个错误与特定课程用户注册方法设置有关。如果您收到此错误,请转到课程页面,然后在课程管理>下;用户>注册方法(不是“手动注册”,这是一个子类别),检查以确保“启用手动注册”(单击带有斜线的眼睛打开)。