---
id: GoogleCalendar
sidebar_class_name: GoogleCalendar
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, Google Calendar]
---

<img src={require('../../static/img/APIs/GoogleCalendar.png').default} width='64px' />

# Google Календарь

### Начало работы

Для начала работы необходимо создать аккаунт и новый проект на [главной странице консоли Google Cloud](https://console.cloud.google.com/), после чего подключить сервис Calendar на [его странице в Marketplace](https://console.cloud.google.com/marketplace/product/google/calendar-json.googleapis.com) 

Далее необходимо получить токен доступа для авторизации при вызове функций библиотеки. Сделать это можно одним из двух способов:

### Авторизация через Service Account

Получить токен доступа можно при помощи секретного ключа Service Account. Для этого необходимо:

1. Выбрать проект и в боковом меню перейти в раздел *IAM & Admin -> Service Accounts*
2. Нажать *Create service account* и заполнить необходимые поля для создания нового аккаунта
3. В списке аккаунтов найти созданный и нажать *Actions* (три точки) в правой части записи
4. Выбрать пункт *Manage keys*
5. Нажать *Add key -> Create new key*
6. Выбрать *JSON* и скачать данные полученного ключа

Далее полученный JSON файл необходимо передать (как коллекцию, путь к файлу или двоичные данные) в функцию `ПолучитьТокенServiceАккаунта`. Также при вызове этой функции можно указать доступы и время жизни полученного токена. По истечении времени жизни, новый токен может быть получен повторным вызовом функции `ПолучитьТокенServiceАккаунта`

### OAuth авторизация

OAuth авторизация позволяет получать временный обновляемый токен доступа для конкретного пользователя Google через страницу авторизации. Для активации OAuth авторизации в проекте необходимо выполнить следуюшие действия:

1. Выберите проект и в боковом меню перейдите в раздел *APIs and Services -> OAuth consent screen*
2. Выберите пункт *External*
3. Заполните необходимую информацию в предложенных полях
4. Нажмите *Save and continue* по окончанию процесса настройки
5. Нажмите *Publish App*
6. В боковом меню выберите пункт *Credentials -> Create Credentials -> OAuth client ID*
7. Введите имя и выберите *Application type - Desktop app*
8. Сохраните **ClientID** и **Client Secret**

После получения клиентского ID, необходимо получить URL для авторизации. Сделать это можно передав ClientID в функцию `СформироватьСсылкуПолученияКода`. Полученную в результате выполнения функцию ссылку необходимо открыть в барузере, авторизоваться со своим аккаунтом Google, после чего быстро передать код доступа из URL (текст в адресной строке после `code=`) в функцию `ПолучитьТокенПоКоду` 


:::important
**Время жизни кода крайне мало.** После перехода по ссылке из функции `СформироватьСсылкуПолученияКода` и авторизации со своим аккаунтом Google, необходимо максимально быстро передать его в функцию `ПолучитьТокенПоКоду`. Лучше всего заранее подготовить обработку с полем для ввода и кнопкой (в 1С), либо же использовать CLI версию ОПИ. В случае истечения срока жизни кода до выполнения функции `ПолучитьТокенПоКоду`, будет получена ошибка `invalid_grant`
:::

В результате функции будет структура, содержащая `access_token` и `refresh_token`: первый служит для использования при вызове остальных функций библиотеки, а второй - для получения нового `access_token` по истечению срока его действия (при помощи функции `ОбновитьТокен`)

`refresh_token` не изменяется при получении нового `access_token` и может быть использован многократно

```json title="Результат функции ПолучитьТокенПоКоду в виде JSON"

{
 "token_type": "Bearer",
 "refresh_token": "1//09au6OES3JN9oCgYIARAAGAkSNwF-L9Ir1B7uawfwafT1wE0FKO519Xj6JxawfawfyjMyJ_QlUZYLHZqw",
 "scope": "https://www.googleapis.com/auth/calendar",
 "expires_in": 3599,
 "access_token": "ya29.a0AfB_byA344tXkIawdawdwadadhyZQV8bSZn_snNXtY2HLb7l71awdawdawdad-ASgpzyOSWIvEmPruhUa_1yCCq6jvoD0r_q-fNEsARrH8zpJ3c6LNGWvwdg8CXsSxYaCgYKAWkSawfwafawfrCK0EP5kZY_A0171"
}

```

