Node.js 使用Google API访问公共日历而无需用户登录

Node.js 使用Google API访问公共日历而无需用户登录,node.js,google-api,google-calendar-api,google-api-nodejs-client,Node.js,Google Api,Google Calendar Api,Google Api Nodejs Client,我想使用谷歌的RESTAPI访问公共日历 Google的日历API建议我需要OAuth令牌才能访问日历: 但是,我正在访问一个公共日历,并且正在从服务器上执行此操作,因此不能/不应该要求用户进行身份验证 我正在使用node.js api: googleapis .discover('calendar', 'v3').execute(function(err, client) { client.calendar.calendars.get({ calendarId: '***@gro

我想使用谷歌的RESTAPI访问公共日历

Google的日历API建议我需要OAuth令牌才能访问日历:

但是,我正在访问一个公共日历,并且正在从服务器上执行此操作,因此不能/不应该要求用户进行身份验证

我正在使用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);
      });
  });
这返回“您的客户发出了一个格式错误或非法的请求。这就是我们所知道的。”

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


有什么建议吗?

正如文档中多次说明的那样

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

因此,如果你想使用谷歌日历API,你需要一个经过身份验证的用户。这可以通过和等模块轻松实现

但是,如果您可以暂时不使用API

  • 日历是公开的
  • 您想要只读访问权限
您可以通过ical、xml或html轻松获取公共地址并使用日历。查看英国节假日公共日历:

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

  • xml
  • 艾尔
  • html

在这一点上,使用node获取这样的资源并获取所需的数据是很简单的。

哦,伙计们,加油!只要日历设置为公共,您就可以在不使用OAuth的情况下获取数据,而无需用户登录!我自己也测试过

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


文档就在这里

不幸的是,“基本”提要没有包括所有日历数据,“完整”提要刚刚停用。我已经反复尝试了,无论出于什么原因,我都无法使其正常工作。我删除了授权标头。在那之后它就开始工作了