Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Moodle API在Moodle中创建用户&;Node.js_Node.js_Moodle_Moodle Api - Fatal编程技术网

使用Moodle API在Moodle中创建用户&;Node.js

使用Moodle API在Moodle中创建用户&;Node.js,node.js,moodle,moodle-api,Node.js,Moodle,Moodle Api,试图在moodle中创建用户,但我得到的只是\n\ninvalidtoken\ninvalidtoken-找不到令牌\n\n 该令牌是绝对正确的,因为我是从/admin/settings.php?section=webservicetokens获取它的 这是我正在使用的代码 const axios = require('axios'); var token = 'XXXXXXXXXXXXXxx'; var functionname = 'core_user_create_users'; va

试图在moodle中创建用户,但我得到的只是
\n\ninvalidtoken\ninvalidtoken-找不到令牌\n\n

该令牌是绝对正确的,因为我是从/admin/settings.php?section=webservicetokens获取它的

这是我正在使用的代码

const axios = require('axios');

var token = 'XXXXXXXXXXXXXxx';
var functionname = 'core_user_create_users';

var userstocreate = [{
    username: 'bananaicecream',
    password: '1234',
    firstname: 'Banana',
    lastname: 'Republic',
    email: 'test@example.com',
    idnumber: 'AUTOGENERATEDID001',
    lang: 'en',
    description: 'If you die you die',
    country: 'us'
}];

export async function callMoodle() {
    return axios({
        url: `https://somedomainname.moodlecloud.com/webservice/rest/server.php`,
        method: 'post',
        data: {
            wstoken: token,
            wsfunction: functionname,
            moodlewsrestformat: 'json',
            users: userstocreate
        }
    })
    .then( (response) => {
        return {status: response.status, response: response.data};
    })
    .catch( (error) => {
        return {status: error.response.status, response: error.response.data};
    });
}
知道我做错了什么吗?因为我已经建立了一个名为“我的服务”的外部服务,并为其分配了相应的功能

下面是函数


我建议您通过邮递员之类的方式测试您的Web服务呼叫。这将至少确保参数和Web服务调用是正确的,并指示问题是与nodejs代码还是Web服务调用有关。

已解决-您需要将数据作为表单数据发送

const axios = require('axios');
const FormData = require('form-data');

export async function callMoodle() {
    const formData = new FormData();
    await formData.append('moodlewsrestformat', 'json');
    await formData.append('wsfunction', 'core_user_create_users');
    await formData.append('wstoken', 'TOKEN_HERE');
    await formData.append('users[0][username]', 'bananaicecream');
    await formData.append('users[0][password]', 'xxxxxxxx');
    await formData.append('users[0][firstname]', 'Banana');
    await formData.append('users[0][lastname]', 'Republic');
    await formData.append('users[0][email]', 'user@example.com');
    await formData.append('users[0][idnumber]', 'AUTOGENERATEDID001');
    await formData.append('users[0][lang]', 'en');
    await formData.append('users[0][description]', 'If you die you die');

    return axios.post('https://somedomain.moodlecloud.com/webservice/rest/server.php', formData, {
        headers: formData.getHeaders()
    })
    .then( (response) => {
        let response_object = {status: response.status, response: response.data};
        return response_object;
    })
    .catch( (error) => {
        let response_object = {status: error.response.status, response: error.response.data};
        return response_object;
    });
}