使用Google API访问公共日历,无需用户login

我想使用Google的REST API访问公共日历。

Google的日历APIbuild议我需要一个OAuth令牌来访问日历:

https://developers.google.com/google-apps/calendar/auth

但是,我正在访问公共日历,并从服务器这样做,所以不能/不应该要求用户进行身份validation。

我正在使用node.js API:

googleapis .discover('calendar', 'v3').execute(function(err, client) { client.calendar.calendars.get({ calendarId: '***@group.calendar.google.com' }) .execute(function (err, response) { console.log('response from google', response); }); }); 

这返回“您的客户已经发出了一个格式不正确或非法的请求,这就是我们所知道的。

.withApiKey('***')之后调用.withApiKey('***') .calendars.get()返回相同的错误。

有什么build议么?

由于文档状态不止一次

所有对Google日历API的请求都必须由经过身份validation的用户授权。

因此,如果您想使用Google日历API,则需要经过身份validation的用户。 这可以通过使用Passport.js和Passport-google-oauth等模块轻松实现。

但是,如果您可以暂时搁置这个API一会儿

  • 日历是公开的
  • 你想只读访问

您可以轻松获取公共地址,并通过ical,xml或html使用日历。 看看英国的假期公共日历: http : //imgur.com/UGjPtqp

您可以从以下公开访问数据:

此时,通过节点获取这些资源并获取所需的数据是微不足道的。

哦,来吧,伙计! 只要日历设置为公共,您就可以在没有OAuth的情况下获取数据,而不需要用户login! 我已经testing过了。

 $.ajax({ url:"https://www.googleapis.com/calendar/v3/calendars/" + cal_id + "/events?key=" + api_key, success: function(data) { console.log(data); } }); 

去尝试一下。

文档位于https://developers.google.com/google-apps/calendar/v3/reference/events/list#examples

Google需要拥有经过身份validation的用户,但由于这是公共日历,您不应该要求用户进行身份validation。 这是服务器端,所以使用自己的authentication(或创build一个谷歌用户只是为此),作为一个身份validation的用户,你将有权访问该日历,而不要求真正的用户进行身份validation…