我目前正在使用google calendar api并尝试在javascript中编写一个使用calendar.events.watch
函数的函数,以便在用户日历中有更新时进行更新(取消,创建或修改。
我正在尝试查看我获得的信息,以便了解此服务是否与我的需求相关 - 了解是否发生了更改或甚至发生了更改。
我打开一个频道并提供数据,但是当我对日历进行更改时,我没有得到任何回复,如下所示: https://developers.google.com/google-apps/calendar/v3/reference/events/watch
这是我写的函数:
function watchEvents(token) {
var calendar = google.calendar('v3');
var oauth2ClientPromise = createAuthObject(token);
console.log('step 1')
return oauth2ClientPromise
.then(function (authObject){
console.log('step 3')
return Q.nfcall(calendar.events.watch, {
auth: authObject,
calendarId: '*I put here my email*',
singleEvents: true,
orderBy: 'startTime',
resource:{
id: channel_id,
token: 'email=' + '* placed my email*',
type: 'web_hook',
address: '*placed my address*',
params: {
ttl: '36000'
}
}
});
})
.catch(function(err) {
console.log('step 2');
});
}
我运行了代码:
calendar.watchEvents(token_parsed).then((result)=>console.log("result"))
.catch(err=>console.log(err));
我没有错误,它输入了我的第1步'和'步骤3'标志,但当我在日历中更改事件时,我没有收到任何通知。
这是我在控制台中得到的:
第1步 侦听端口8080的示例应用程序! 第3步 结果
有谁知道我应该从API获得什么样的信息?怎么样?那是不是我的工作?
答案 0 :(得分:2)
但是当我在日历中更改了事件时,我没有得到任何事件 通知强>
通过向指南中所述的资源的watch方法发送POST请求来启用另请注意:
“每个通知渠道都与特定用户相关联 和特定资源(或资源集)。观看请求会 除非当前用户拥有或拥有许可,否则不会成功 访问此资源。“
实施例
开始关注给定日历上的事件集合的更改:
POST https://www.googleapis.com/calendar/v3/calendars/my_calendar@gmail.com/events/watch
Authorization: Bearer auth_token_for_current_user
Content-Type: application/json
{
"id": "01234567-89ab-cdef-0123456789ab", // Your channel ID.
"type": "web_hook",
"address": "https://sampledomain.com/notifications", // Your receiving URL.
...
"token": "target=myApp-myCalendarChannelDest", // (Optional) Your channel token.
"expiration": 1426325213000 // (Optional) Your requested channel expiration time.
}
}
您可以从官方指南中了解更多内容,包括Receiving Notifications tuts。