# Инструкция по настройке Google Calendar API

## Необходимые данные для работы плагина

Для отправки событий в Google Calendar вам понадобятся следующие ключи и настройки:

### 1. Google Client ID
- **Что это:** Идентификатор вашего приложения в Google Cloud Console
- **Формат:** Строка вида `123456789-abcdefghijklmnop.apps.googleusercontent.com`
- **Где взять:** Google Cloud Console → Credentials → OAuth 2.0 Client ID

### 2. Google Client Secret
- **Что это:** Секретный ключ для вашего OAuth приложения
- **Формат:** Строка вида `GOCSPX-abcdefghijklmnopqrstuvwxyz`
- **Где взять:** Google Cloud Console → Credentials → OAuth 2.0 Client ID (показывается только один раз при создании)

### 3. Redirect URI (URI перенаправления)
- **Что это:** URL, на который Google перенаправит после авторизации
- **Формат:** `https://ваш-сайт.com/wp-admin/admin.php?page=ges-settings`
- **Важно:** Должен точно совпадать с настройкой в Google Cloud Console

### 4. Calendar ID (ID календаря)
- **Что это:** Идентификатор календаря, в который будут добавляться события
- **Значение по умолчанию:** `primary` (основной календарь)
- **Альтернатива:** Можно указать конкретный календарь (например, email календаря)

### 5. Scope (Область доступа)
- **Что это:** Разрешения, которые запрашивает приложение
- **Значение:** `https://www.googleapis.com/auth/calendar.events`
- **Что позволяет:** Создавать, читать, обновлять и удалять события в календаре

---

## Пошаговая инструкция по получению ключей

### Шаг 1: Создание проекта в Google Cloud Console

1. Перейдите на [Google Cloud Console](https://console.cloud.google.com/)
2. Войдите в свой Google аккаунт
3. Нажмите на выпадающий список проектов вверху страницы
4. Нажмите **"New Project"** (Новый проект)
5. Введите название проекта (например, "BookSync Calendar")
6. Нажмите **"Create"** (Создать)

### Шаг 2: Включение Google Calendar API

1. В меню слева выберите **"APIs & Services"** → **"Library"** (Библиотека)
2. В поиске введите **"Google Calendar API"**
3. Выберите **"Google Calendar API"**
4. Нажмите кнопку **"Enable"** (Включить)

### Шаг 3: Настройка экрана согласия OAuth

1. Перейдите в **"APIs & Services"** → **"OAuth consent screen"** (Экран согласия OAuth)
2. Выберите тип пользователя:
   - **Internal** (Внутренний) - только для Google Workspace
   - **External** (Внешний) - для обычных пользователей
3. Заполните обязательные поля:
   - **App name** (Название приложения): например, "BookSync Calendar"
   - **User support email** (Email поддержки): ваш email
   - **Developer contact information** (Контакт разработчика): ваш email
4. Нажмите **"Save and Continue"** (Сохранить и продолжить)
5. На шаге **"Scopes"** (Области):
   - Нажмите **"Add or Remove Scopes"**
   - Найдите и выберите: `https://www.googleapis.com/auth/calendar.events`
   - Нажмите **"Update"** → **"Save and Continue"**
6. На шаге **"Test users"** (Тестовые пользователи) - если приложение в статусе "Testing":
   - Добавьте свой email как тестового пользователя
   - Нажмите **"Save and Continue"**
7. Нажмите **"Back to Dashboard"** (Вернуться к панели)

### Шаг 4: Создание OAuth 2.0 Client ID

1. Перейдите в **"APIs & Services"** → **"Credentials"** (Учетные данные)
2. Нажмите **"+ CREATE CREDENTIALS"** (Создать учетные данные)
3. Выберите **"OAuth client ID"** (OAuth клиент ID)
4. Если появится предупреждение о настройке экрана согласия - следуйте инструкциям выше
5. Выберите тип приложения: **"Web application"** (Веб-приложение)
6. Введите **Name** (Название): например, "BookSync Calendar Web Client"
7. В разделе **"Authorized redirect URIs"** (Авторизованные URI перенаправления):
   - Нажмите **"+ ADD URI"**
   - Введите ваш Redirect URI:
     ```
     https://ваш-сайт.com/wp-admin/admin.php?page=ges-settings
     ```
   - **Важно:** Замените `ваш-сайт.com` на реальный домен вашего сайта
   - URL должен быть точным, включая `https://` и путь
8. Нажмите **"Create"** (Создать)
9. **Скопируйте и сохраните:**
   - **Client ID** (Клиент ID)
   - **Client Secret** (Секрет клиента) - показывается только один раз!

### Шаг 5: Настройка в плагине WordPress

1. В админ-панели WordPress перейдите в **"BookSync to Google Calendar"** → **"Settings"**
2. Заполните поля:
   - **Google Client ID:** вставьте скопированный Client ID
   - **Google Client Secret:** вставьте скопированный Client Secret
   - **Redirect URI:** оставьте по умолчанию или укажите тот же, что в Google Console
   - **Calendar ID:** оставьте `primary` или укажите конкретный календарь
3. Нажмите **"Save Changes"** (Сохранить изменения)
4. Нажмите кнопку **"Connect Google Account (OAuth)"**
5. Разрешите доступ приложению к вашему календарю
6. После успешной авторизации вы будете перенаправлены обратно в настройки плагина

---

## Альтернативный метод: Service Account (для серверных приложений)

Если вы хотите использовать Service Account вместо OAuth:

1. В Google Cloud Console перейдите в **"APIs & Services"** → **"Credentials"**
2. Нажмите **"+ CREATE CREDENTIALS"** → **"Service account"**
3. Заполните данные и создайте Service Account
4. Создайте ключ JSON:
   - Откройте созданный Service Account
   - Перейдите на вкладку **"Keys"**
   - Нажмите **"Add Key"** → **"Create new key"**
   - Выберите формат **JSON**
   - Скачайте файл
5. Скопируйте содержимое JSON файла в настройки плагина (если такая опция есть)

---

## Проверка настроек

После настройки проверьте:

1. ✅ **Client ID и Client Secret** сохранены в настройках плагина
2. ✅ **Redirect URI** точно совпадает в Google Console и в плагине
3. ✅ **Google Calendar API** включен в проекте
4. ✅ **Scope** `calendar.events` добавлен в OAuth consent screen
5. ✅ **Авторизация пройдена** - кнопка "Connect Google Account" работает
6. ✅ **Токены сохранены** - в базе данных WordPress есть `ges_tokens`

---

## Частые проблемы и решения

### Ошибка: "redirect_uri_mismatch"
**Причина:** Redirect URI в плагине не совпадает с настройкой в Google Console
**Решение:** Убедитесь, что URI точно совпадает, включая `https://` и путь

### Ошибка: "access_denied"
**Причина:** Пользователь не дал разрешение или приложение в статусе "Testing"
**Решение:** Добавьте email пользователя в список тестовых пользователей

### Ошибка: "invalid_client"
**Причина:** Неверный Client ID или Client Secret
**Решение:** Проверьте правильность скопированных ключей

### Ошибка: "API not enabled"
**Причина:** Google Calendar API не включен в проекте
**Решение:** Включите API в разделе "APIs & Services" → "Library"

---

## Безопасность

⚠️ **Важно:**
- Никогда не публикуйте Client Secret в публичных репозиториях
- Храните ключи в безопасном месте
- Регулярно проверяйте активность в Google Cloud Console
- Используйте HTTPS для вашего сайта (обязательно для OAuth)

---

## Дополнительная информация

- [Документация Google Calendar API](https://developers.google.com/calendar/api)
- [Руководство по OAuth 2.0](https://developers.google.com/identity/protocols/oauth2)
- [Google Cloud Console](https://console.cloud.google.com/)




