我想使用Google的REST API访问公共日历。
Google的日历API建议我需要OAuth令牌才能访问日历:
https://developers.google.com/google-apps/calendar/auth
但是,我正在访问公共日历并且正在从服务器执行此操作,因此无法/不应该要求用户进行身份验证。
我正在使用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('***')
之后调用.calendars.get()
会返回相同的错误。
有什么建议吗?
答案 0 :(得分:12)
由于文档不止一次说明
对Google Calendar API的所有请求必须由经过身份验证的用户授权。
因此,如果您想使用Google日历API,则需要经过身份验证的用户。使用Passport.js和Passport-google-oauth等模块可以轻松实现这一目标。
但是,如果您可以暂时搁置API并
您可以轻松获取公共地址并通过ical,xml或html使用日历。查看英国假期公共日历:http://imgur.com/UGjPtqp
您可以从以下位置公开访问数据:
此时,使用节点获取此类资源并获取所需数据非常简单。
答案 1 :(得分:9)
哦,伙计们!只要日历设置为公开,您就可以在不需要OAuth的情况下获取数据而无需用户登录!我自己测试了一下。
$.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
答案 2 :(得分:0)
Google需要拥有经过身份验证的用户,但由于它是公共日历,因此您不必让用户进行身份验证。 它是服务器端,因此请使用您自己的身份验证(或仅为此创建一个Google用户),并且作为经过身份验证的用户,您可以访问该日历,而无需要求真实用户进行身份验证...