Мастер подключений
Страница /connect — обзор четырёх подключений, /connect/{google|yandex|ga4|metrika} — пошаговый мастер. Старые страницы «Поисковые системы» (/integrations) и «Посещаемость» (/traffic) остались, из них есть ссылка на мастер; хранение ключей и загрузка данных общие.
Шаги
- Подготовка. Что сделать в консоли Яндекса или Google: добавить сайт, создать приложение/сервисный аккаунт, включить API, выдать доступ. Каждый шаг со ссылкой и временем.
- Ключ. OAuth-токен (Яндекс) или JSON-ключ сервисного аккаунта (Google). Для Метрики и GA4 можно использовать ключ уже подключённых Вебмастера и Search Console — ключ берётся на сервере и в браузер не передаётся.
- Проверка разрешений. Мастер сам проверяет формат ключа, принимает ли его сервис, включён ли API, есть ли доступ к сайтам и читаются ли данные. Каждая проверка — «в порядке», «замечание» или «ошибка» с объяснением и шагами исправления.
- Сайты и данные. Для каждого вашего сайта: найден, не подтверждён, ограниченный доступ или не найден; и список того, какие данные будут доступны.
Кнопка «Только проверить» ничего не сохраняет. «Проверить и подключить» сохраняет подключение только если нет блокирующих ошибок, затем связывает сайты (счётчики Метрики и ресурсы GA4 — по адресу сайта, с учётом www) и запускает первую загрузку.
Что проверяется
- Яндекс.Вебмастер: формат токена, право webmaster:hostinfo, список сайтов и подтверждение прав, чтение сводки и поисковых запросов.
- Яндекс.Метрика: право metrika:read, счётчики и их адреса, чтение статистики.
- Search Console: JSON-ключ, подпись и обмен на токен, включён ли API, уровень доступа к каждому ресурсу (владелец, полный, ограниченный, не подтверждён), чтение эффективности и карт сайта. Проверка индексации страниц требует «Полное» разрешение.
- GA4: тот же ключ, Analytics Admin API, ресурсы и адреса их веб-потоков, Analytics Data API.
Ошибки
src/Connect/Errors.php: сеть и таймаут, лимит запросов, сбой сервиса, недействительный токен, нет права у токена, отозванный или повреждённый ключ, неверное время сервера, выключенный API (со ссылкой на включение из ответа Google), нет доступа аккаунту (с подстановкой e-mail сервисного аккаунта), нет ресурсов. Ошибка без ответа сервиса (нет сети) никогда не выдаётся за «неверный ключ».
Безопасность
- Форма за входом, с CSRF и ограничением частоты; действия подключения и отключения пишутся в журнал аккаунта.
- Ключ хранится зашифрованным (AES-256-GCM), в отчёты проверки и страницы не попадает; сохранённый ключ в форму не подставляется. Страницы мастера отдаются с
Cache-Control: no-store. - Если проверка не прошла, введённый ключ возвращается в поле того же ответа, чтобы его не пришлось вставлять заново; он нигде не сохраняется.
Что не проверить автоматически
Реальное поведение API Яндекса и Google проверено на подменённых ответах. Права и ключи вы создаёте сами в консолях Яндекса и Google — мастер подсказывает, где и что.