Вход на .dev и OAuth для сторонних сайтов
«Войти» открывает обычный вход на https://zippy-chat.ru с параметром next= обратно на .dev — после входа браузер возвращается сюда, а лаборатория подхватывает сессию (общая cookie на *.zippy-chat.ru и чтение из БД). «Регистрация» — тот же механизм с /register?next=. OAuth authorization code на проде нужен для ваших приложений на других доменах, не для кнопки входа на .dev.
Когда всё же нужен OAuth
- Ваш сайт на другом домене — браузер не отправит cookie ZIPPY чужому origin; нужен код / токен (Authorization Code +
/oauth/token). - Локальная разработка без общей cookie — на localhost поддомены не совпадают; для .dev остаётся fallback через
https://zippy-chat.ru/oauth/authorize.
Что хранится где
| Место | Данные |
|---|---|
| Основной сайт | Сессия в cookie, таблицы пользователей, oauth_* для выдачи токенов |
| .dev | Своя PHP-сессия, черновики песочницы в dev_playground, тот же MySQL что и прод |
| Ваш сторонний сайт | Свой client_id / secret, redirect на ваш домен |
FAQ
- Общая cookie — это безопасно?
- Да, при HTTPS и
HttpOnly: cookie доступна только поддоменам вашей зоны. Для сторонних доменов по-прежнему используйте OAuth. - Это «ещё одна регистрация»?
- Нет. Вы входите тем же аккаунтом на проде; на .dev создаётся только сессия лаборатории.
- Где задаётся пароль БД?
- Только в
config/config.php— один раз для всего проекта (и прод, и .dev). - Нужен ли OAuth, чтобы просто зайти на .dev?
- Нет. Вход — через обычную форму на проде и
next=. OAuth на проде используете, когда встраиваете ZIPPY на сторонний сайт.
Мини-словарь
Authorization code Одноразовый код в query после согласия пользователя; меняется на access_token только сервером с secret.
redirect_uri Точный URL, куда прод вернёт браузер; должен совпадать с зарегистрированным.
state Случайная строка: вы сохраняете до редиректа и сравниваете после — защита от подмены ответа.
PKCE Расширение для публичных клиентов (мобилки/SPA); для серверного .dev достаточно secret на бэкенде.
sub Стабильный идентификатор пользователя в ответе userinfo — ключ для своих таблиц.
scope Набор разрешений; здесь минимально нужен профиль (openid-подобный поток).
Что можно строить дальше
- Виджет «войти через ZIPPY» на любом вашем поддомене с тем же OAuth-потоком.
- Внутренние инструменты: биллинг, модерация, аналитика — один логин с соцсети.
- Мини-приложения и встраиваемые страницы: токен в iframe через postMessage (осторожно с origin-проверками).
- Песочница на .dev для прототипов UI перед выкладкой в прод.