Подтвердить что ты не робот

API-интерфейс Google Calendar для Google Calendar

Я использую API календаря Google, чтобы показать урезанную версию моего корпоративного календаря. Я бы хотел, чтобы кто-нибудь просмотрел мою версию календаря на моем сайте. В настоящее время только я могу просмотреть страницу календаря, и если я буду делиться URL-адресом страницы с кем-либо, это не сработает - они ничего не видят.

Я использую код запуска Google здесь:

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': '[email protected]',
        'timeMin': '2011-06-03T10:00:00-07:00',
        'showDeleted': false,
        'singleEvents': true,
        'maxResults': 1000,
        'orderBy': 'startTime'
});

Но я не могу найти, где сделать этот календарь общедоступным. Два примера в stackoverflow не объясняют многое, и я не могу ничего связать с документацией API Google.

4b9b3361

Ответ 1

Если вы хотите поделиться своим календарем, вы можете сделать его общедоступным, а затем поделиться своим календарем со всеми. Вот как.

Чтобы сделать свой календарь открытым, вы можете выполнить действия этого веб-сайта https://support.google.com/calendar/answer/37083?hl=en.

Сделайте свой календарь открытым.

  • На компьютере откройте Google Calendar.

  • В правом верхнем углу нажмите "Настройки" шестерни "Настройки" > "Настройки" .

  • Откройте вкладку Календари.

  • Нажмите имя календаря, который вы хотите предоставить.

  • Откройте вкладку "Поделиться этим календарем".

  • Отметьте параметр Сделать этот календарь общедоступным.

  • Если вы не хотите, чтобы другие люди просматривали детали ваших событий, выберите "Показать только свободные/занятые" (скрыть подробности).

  • Нажмите "Сохранить".

а затем вы можете поделиться своим календарем с помощью iframe в своих вариантах календаря. https://support.google.com/calendar/answer/41207?hl=en

Вставьте календарь на свой веб-сайт

  • На компьютере откройте Google Calendar. Вы можете получить код для встраивания на свой сайт с компьютера, а не из мобильного приложения.

  • В правом верхнем углу нажмите "Настройки" шестерни "Настройки" > "Настройки" .

  • Откройте вкладку Календари.

  • Выберите имя календаря, который хотите вставить.

  • В разделе "Вставить этот календарь" скопируйте отображаемый код iframe.

  • Откройте редактор веб-сайта, затем вставьте этот код, где вы хотите отображать календарь.

Ответ 2

Calendars ресурс не имеет атрибутов видимости. Однако, поскольку вы используете Список событий, его ресурс имеет атрибут видимости, в котором вы можете отфильтровать (хотя и вручную) предметы, которые являются общедоступными.

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

Ответ 3

Вам не нужно инициировать процесс авторизации OAuth 2.0 (который устарел), как показывает пример. Фактически, вы можете загрузить календарь с помощью ключа API браузера и идентификатора календаря:

  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.');
      }

    });
  }