GoogleカレンダーのAPIの一部の機能を実装しています。私はGoogleカレンダーと同期する機能を持っているカスタムカレンダーがあります。つまり、ダッシュボードからGoogleカレンダーアカウントにカレンダーや予定を作成、編集できます。私が直面している主な問題は、Googleカレンダーから直接イベントを更新する場合です。私はプッシュ通知を実装し、このような応答を得る:Googleカレンダーの予定変更時にDBを更新する
{
"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/[email protected]/events?alt=json",
"Google_resource_state": "sync",
"Google_message_number": "1"
}
しかし、この応答は非常に一般的です。たとえば、このカレンダーに1000件のイベントがあり、1000件の完全なイベントを更新します。私はいつも同じ通知1000を受け取ります。どのイベントIDに変更があるかを知ることができれば、私は自分のDBを実行して更新することができます。
私は時計を初期化方法は、このようなものです:ウェブフックが発生したときに変更されたイベントを得るための良い方法を探している人々のために
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});
}
});
});
}
重複しています。質問はこの[スレッド](http://stackoverflow.com/questions/18206024/update-database-if-change-in-google-calendar-event)で回答されています。 – noogui
そのスレッドでは正しく応答されません。私の最初の質問を読むと、プッシュ通知が正常に設定されていることがわかります。そのカレンダーで何か起こるたびにプッシュ通知を受け取っていました。実際の質問は、どのイベントがプッシュ通知をトリガに変更したかです。私は既に解決策を見つけてここに答えを投稿します。 –