【发布时间】:2016-04-12 02:48:14
【问题描述】:
我一直在实现google calendar api的一些功能。我有一个自定义日历,它能够与谷歌日历同步。这意味着,您可以从我的仪表板到 Google 日历帐户创建和编辑日历和事件。我面临的主要问题是,如果我直接从我的谷歌日历更新活动。我已经实现了推送通知并得到这样的响应:
{
"Google_channel_ID": "19835150 - 0057 - 11e6 - bc9c - 1735798 ca540",
"Google_channel_token": "calendar_id = 4e7 d5c20ht9lpfdtuukcsvgeq4 @group.calendar.google.com & user_id = 43e d7rxeqqce3fk09ahszc",
"Google_channel_expiration": "Tue,12 Apr 2016 12: 34: 36 GMT",
"Google_resource_id": "oLMEEhHAw5Xo3r2187CWykjAtm0",
"Google_resource_URI": "https: //www.googleapis.com/calendar/v3/calendars/4e7d5c20ht9lpfdtuukcsvgeq4@group.calendar.google.com/events?alt=json",
"Google_resource_state": "sync",
"Google_message_number": "1"
}
但是这个反应很笼统。例如,如果我在此日历上有 1000 个事件,并更新完整的 1000 个事件。我将始终收到相同的通知 1000。我想知道,是否可以获取哪个事件 id 已更改,以便我可以执行并更新到我的数据库。
我初始化手表的方式是这样的:
exports.watch = function(req, res){
var channel_id = uuid.v1();
var user_id = req.body.user_id;
var calendar_id = req.body.calendar_id;
authorize(user_id, function(oauth2Client){
var data = {
auth: oauth2Client,
calendarId: calendar_id,
resource: {
id: channel_id,
token: 'calendar_id='+ calendar_id + '&user_id=' + user_id,
address: 'https://api.medradr.com/google-watch',
type: 'web_hook',
params: {
ttl: '36000'
}
}
};
calendar.events.watch(data, function (err, response) {
if (err) {
console.error('The API returned an error: ' + err);
return;
}else{
res.send({ok: true, message: 'Listener created', result:response});
}
});
});
}
【问题讨论】:
-
重复。这个thread已经回答了问题。
-
该线程没有正确回答。如果您阅读我的第一个问题,您会看到我已成功配置推送通知,并且每次该日历上发生某些事情时我都会收到推送通知。真正的问题是,现在如何更改推送通知触发的事件之一?我已经找到了解决方案并在这里发布了答案。
标签: node.js calendar google-calendar-api