2017-07-06 82 views
0

我正在尝试使用V3 API创建事件。我送的参数是:无法使用API​​创建Eventbrite事件

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-encoded和内部optionsJSON.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" 
} 

有什么样创建活动要求的任何地方我可以看看?以上要求有什么问题?

回答

0

我认为问题在于您目前正在发送表格帖子(凭借使用form选项),但是您的参数应该看起来像{ "event.currency": "USD", "event.name.html": "Test Event 01", ... }。如果你想发送JSON,你需要使用json: true,并通过一个JSON序列化的身体:如果你想坚持使用表单POST

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, 
}; 
+0

顺便说一句,这种事情的一个有用的调试工具是https://requestb.in/。将您的API请求发送到那里,而不是发送到Eventbrite API,并且您可以准确查看您要发送的内容。在那里,我相信你会看到你发送一个表单编码的身体而不是JSON。 – smarx

+0

辉煌。绝对的辉煌。你救了我的一天! – User2682