我查看了与此问题相关的其他帖子,但它们不一样:我正在使用"回复",我从google api网站复制了日期/时间,因此格式正确,并且我已经玩过标题了。为什么这不起作用的任何其他想法?
我收到以下错误:
Error: failed [400] { "error": { "errors": [ { "domain": "global", "reason": "required", "message": "Missing end time." } ], "code": 400, "message": "Missing end time." } } [object Object]
我的代码分解为以下步骤:我要进入POST的网址,用户访问令牌,插入日历事件的选项(包括标题)以及包含开始,结束和事件摘要的事件以及实际http post和callback函数:
calendarSchedule() {
if(Meteor.user() && moment(Meteor.user().services.google.expiresAt) > moment()._d) {
var url = "https://www.googleapis.com/calendar/v3/calendars/primary/events";
var userAccessToken = Meteor.user().services.google.accessToken;
var options = {
headers : {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + userAccessToken,
'X-JavaScript-User-Agent': "Google APIs Explorer",
},
calendarId: 'primary',
resource : {
start: { dateTime: "2016-05-03T18:03:58+02:00" },
end: { dateTime: "2016-05-03T18:03:58+02:00" },
summary: "testSummar",
}
};
HTTP.post(url, options,
function(error,result) {
console.log("posted to calendar? "+ error+ result);
});
}
}
答案 0 :(得分:0)
我想通了,我想我应该在这里发布答案。
出于某种原因,在这种情况下,您使用数据而不是资源。我不确定为什么万一其他人想在这一点上插话,但这与谷歌API日历网站上的内容不同。
我的最终代码有效:
calendarSchedule() {
if(Meteor.user() && moment(Meteor.user().services.google.expiresAt) > moment()._d) {
var url = "https://www.googleapis.com/calendar/v3/calendars/primary/events";
var userAccessToken = Meteor.user().services.google.accessToken;
var currentEvent = {
'summary': this.props.text,
// 'location': this.refs.location.textContent,
'start': {
'dateTime': moment()._d,
'timeZone': this.refs.timeZone,
},
'end': {
'dateTime': moment(moment()._d).add(1, 'hours'),
'timeZone': this.refs.timeZone,
},
'attendees': [],
'reminders': {
'useDefault': true,
}
};
var options = {
headers : {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + userAccessToken,
'X-JavaScript-User-Agent': "Google APIs Explorer",
},
calendarId: 'primary',
data: currentEvent,
};
var searchResult = HTTP.post(url, options,
function(error,result) {
console.log("posted to calendar? "+ error+ result);
});
}
}