无法使用API​​创建Eventbrite事件

时间:2017-07-06 10:59:03

标签: node.js eventbrite

我正在尝试使用V3 API创建一个事件。我发送的参数是:

var _event = {
    "event" : {
        "name": {
            "html": "Test Event 01"
        },
        "description": {
            "html": "Test Event 01"
        },
        "start": {
            "timezone": "America/Chicago",
            "utc": "2017-07-10T18:00:00Z"
        },
        "end": {
            "timezone": "America/Chicago",
            "utc": "2017-07-10T20:00:00Z"
        },
        "currency": "USD"
    }
};

这是我使用NodeJS发送请求的方式:

var request = require('request');
var _headers = {
    'Authorization': 'Bearer ' + _token,
    'Content-Type': 'application/json',
}

// Configure the request
var options = {
    url: EVENTBRITE_API_URL + "events/",
    method: 'POST',
    headers: _headers,
    form: _event
}

我还尝试了Content-Type: application/x-url-form-encodedoptionsJSON.stringify(_event)。我还尝试将_event对象更改为:

var _event = {        
    "name": {
        "html": "Test Event 01"
    },
    "description": {
        "html": "Test Event 01"
    },
    "start": {
        "timezone": "America/Chicago",
        "utc": "2017-07-10T18:00:00Z"
    },
    "end": {
        "timezone": "America/Chicago",
        "utc": "2017-07-10T20:00:00Z"
    },
    "currency": "USD"
};

我尝试了所有组合,但我总是得到相同的反应:

{
    "status_code": 400,
    "error_description": "There are errors with your arguments: event[currency] - Unknown parameter, event.start.timezone - This field is required., event.currency - This field is required., event.start.utc - This field is required., event[start][timezone] - Unknown parameter, event.end.utc - This field is required., event[end][utc] - Unknown parameter, event[description][html] - Unknown parameter, event[name][html] - Unknown parameter, event[end][timezone] - Unknown parameter, event[start][utc] - Unknown parameter, event.end.timezone - This field is required., event.name.html - This field is required.",
    "error": "ARGUMENTS_ERROR"
}

在我可以查看的任何地方是否有任何样本创建事件请求?上述请求有什么问题?

1 个答案:

答案 0 :(得分:0)

我认为问题是您目前正在发送表单帖子(通过使用form选项),但您的参数应该看起来像{ "event.currency": "USD", "event.name.html": "Test Event 01", ... }。如果要发送JSON,则需要使用json: true并传递JSON可序列化的正文:

var request = require('request');
var _headers = {
    'Authorization': 'Bearer ' + _token,
    'Content-Type': 'application/json',
}

// Configure the request
var options = {
    url: EVENTBRITE_API_URL + "events/",
    method: 'POST',
    headers: _headers,

    // Instead of this:
    // form: _event

    // use this:
    json: true, // says you're sending JSON
    body: _event, // so the body should be JSON-serializable
};

如果您想坚持使用表格帖子,我认为应该这样做:

var _event = {
    "event.name.html": "Test Event 01",
    "event.description.html": "Test Event 01",
    "event.start.timezone": "America/Chicago",
    "event.start.utc": "2017-07-10T18:00:00Z",
    "event.end.timezone": "America/Chicago",
    "event.end.utc": "2017-07-10T20:00:00Z",
    "event.currency": "USD",
};

var request = require('request');
var _headers = {
    'Authorization': 'Bearer ' + _token,
    'Content-Type': 'application/x-www-form-urlencoded',
}

// Configure the request
var options = {
    url: EVENTBRITE_API_URL + "events/",
    method: 'POST',
    headers: _headers,
    form: _event,
};