如何请求访问用户的日历一次,然后查询事件而无需再次请求访问?只要不被撤销,是否有可以授予连续访问权限的访问密钥?
我目前在运行express + mongodb的 nodejs 应用程序中使用google-calendar模块。
下面的示例显示了用于发出 OAuth 请求并重定向回应用程序的部分代码。这很好用。不过,我想要的是一旦我有权访问,就能够随时查询用户的事件。这将在一个预订应用程序中使用,一旦用户注册了他们的公共谷歌日历,其他人就可以看到他们的可用性。
我查看了Google Calendar API文档,但无法弄清楚我需要的持续访问需要什么。
配置:
var GoogleCalendar = require('google-calendar');
var google_calendar = new GoogleCalendar.GoogleCalendar(config.google.clientId, config.google.clientSecret, 'http://localhost:3000/authentication');
显示路线:
app.get('/display', function(req, res) {
// redirect user to Google Authentication
var access_token = req.session.access_token;
if(!access_token) {
req.session.authReturn = req.url;
return res.redirect('/authentication');
}
google_calendar.listCalendarList(access_token, function(err, calendarList) {
// do something with the calendar events...
}
...
验证路由:
app.all('/authentication', function(req, res){
// Redirect the user to Google's authentication form
if(!req.query.code){
google_calendar.getGoogleAuthorizeTokenURL(function(err, redirectUrl) {
if(err) return res.send(500,err);
return res.redirect(redirectUrl);
});
}
// Get access_token from the code
else {
google_calendar.getGoogleAccessToken(req.query, function(err, access_token, refresh_token) {
if(err) return res.send(500,err);
req.session.access_token = access_token;
req.session.refresh_token = refresh_token;
return res.redirect(req.session.authReturn);
});
}
});