繁体   English   中英

Javascript Google Calendar API将日历设置为公开

[英]Javascript Google Calendar API Set Calendar to Public

我正在使用谷歌日历的API来显示我公司日历的精简版。 我想让任何人在我的网站上查看我的日历版本。 目前,只有我可以查看日历页面,如果我要与任何人共享页面URL,它不起作用 - 他们无法查看任何内容。

我在这里使用谷歌的起始代码:

var CLIENT_ID = 'MYID**';
var SCOPES = ["https://www.googleapis.com/auth/calendar.readonly"];

function checkAuth() {
    gapi.auth.authorize(
      {
        'client_id': CLIENT_ID,
        'scope': SCOPES,
        'immediate': true
      }, handleAuthResult);
}

function handleAuthResult(authResult) {
    var authorizeDiv = document.getElementById('authorize-div');
  loadCalendarApi();
}

function handleAuthClick(event) {
    gapi.auth.authorize({
        client_id: CLIENT_ID, 
        scope: SCOPES, 
        immediate: false
    }, handleAuthResult); 
    return false;
}

function loadCalendarApi() {
    gapi.client.load('calendar', 'v3', listUpcomingEvents);
}

function listUpcomingEvents() {
    var request = gapi.client.calendar.events.list({
        'calendarId': 'iorbmkj57ee8ihnko0va1snif8@group.calendar.google.com',
        'timeMin': '2011-06-03T10:00:00-07:00',
        'showDeleted': false,
        'singleEvents': true,
        'maxResults': 1000,
        'orderBy': 'startTime'
});

但我似乎无法找到将这个日历公之于众的地方。 stackoverflow上的两个示例没有解释太多,我似乎无法连接Google的API文档中的任何内容。

如果您只想共享日历,可以将其公开,然后将日历分享给每个人。 这是怎么回事。

要公开您的日历,您可以按照此网站的步骤https://support.google.com/calendar/answer/37083?hl=en

公开您的日历

  1. 在计算机上,打开Goog​​le日历。

  2. 点击右上角的设置设置齿轮按钮>设置。

  3. 打开“日历”选项卡。

  4. 单击要共享的日历的名称。

  5. 打开“共享此日历”选项卡。

  6. 选中将此日历设为公开选项。

  7. 如果不希望其他人查看您的活动详情,请选择仅查看忙/闲(隐藏详细信息)。

  8. 单击保存。

然后,您可以在日历选项中与iframe共享日历。 https://support.google.com/calendar/answer/41207?hl=en

在您的网站上嵌入日历

  1. 在计算机上,打开Goog​​le日历。 您只能从计算机而不是移动应用程序中获取嵌入您网站的代码。

  2. 点击右上角的设置设置齿轮按钮>设置。

  3. 打开“日历”选项卡。

  4. 单击要嵌入的日历的名称。

  5. 在“嵌入此日历”部分中,复制显示的iframe代码。

  6. 打开网站编辑器,然后将此代码粘贴到要显示日历的位置。

日历资源没有任何关于可见性的属性。 但是,由于您正在使用“ 事件”列表 ,因此其资源具有可见性属性,您可以在其中过滤掉(尽管是手动)公开的项目。

public The event is public and event details are visible to all readers of the calendar.

您不需要像示例那样启动OAuth 2.0授权过程(已弃用)。 实际上,您可以使用浏览器API密钥和日历ID加载日历:

  function checkAuth() {
    //gapi.auth.authorize(
    //  {
    //    'client_id': CLIENT_ID,
    //    'scope': SCOPES.join(' '),
    //    'immediate': true
      //  }, handleAuthResult);
      gapi.client.setApiKey('browser API key');
      handleAuthResult({ error: false });
  }

  function listUpcomingEvents() {
    var request = gapi.client.calendar.events.list({
        'calendarId': 'your calendar id',
      'timeMin': (new Date()).toISOString(),
      'showDeleted': false,
      'singleEvents': true,
      'maxResults': 10,
      'orderBy': 'startTime'
    });

    request.execute(function(resp) {
      var events = resp.items;
      appendPre('Upcoming events:');

      if (events.length > 0) {
        for (i = 0; i < events.length; i++) {
          var event = events[i];
          var when = event.start.dateTime;
          if (!when) {
            when = event.start.date;
          }
          appendPre(event.summary + ' (' + when + ')')
        }
      } else {
        appendPre('No upcoming events found.');
      }

    });
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM