К содержимому
# Вход на сайте
[Home](/ru/ai)
[Catalog](/ru/ai/catalog)
OAuth, вход с устройства и соответствующие команды CLI.
## Pages
[Главная](/ru/ai/docs)
### Быстрый старт
[Быстрый старт](/ru/ai/docs/quickstart)
[Для человека](/ru/ai/docs/quickstart/human)
[Для ИИ-агента](/ru/ai/docs/quickstart/agent)
[Харнессы](/ru/ai/docs/harnesses)
[Понятия](/ru/ai/docs/concepts)
[Каталог](/ru/ai/docs/catalog)
### CLI
[CLI](/ru/ai/docs/cli)
[Карта команд](/ru/ai/docs/cli/commands)
[Наблюдение](/ru/ai/docs/cli/observe)
[Конфигурация](/ru/ai/docs/cli/config)
[Телеметрия](/ru/ai/docs/cli/telemetry)
[Устройство](/ru/ai/docs/cli/device)
[Паспорта](/ru/ai/docs/cli/passport)
[Вход](/ru/ai/docs/cli/auth)
[Согласие](/ru/ai/docs/cli/consent)
[Проект](/ru/ai/docs/cli/project)
[Toolchain](/ru/ai/docs/cli/toolchain)
[Harness](/ru/ai/docs/cli/harness)
[Agent Skill CLI](/ru/ai/docs/cli/skill)
[Реестр](/ru/ai/docs/cli/registry)
#### Компонент
[Обзор](/ru/ai/docs/cli/component)
[Обнаружение](/ru/ai/docs/cli/component-discover)
[Паспорт](/ru/ai/docs/cli/component-passport)
[Источник](/ru/ai/docs/cli/component-source)
[Публикация](/ru/ai/docs/cli/component-publish)
[Выбор](/ru/ai/docs/cli/select)
[Установка](/ru/ai/docs/cli/install)
[Target](/ru/ai/docs/cli/target)
[Setup](/ru/ai/docs/cli/setup)
[Provider](/ru/ai/docs/cli/provider)
[Синхронизация](/ru/ai/docs/cli/sync)
[Доступ](/ru/ai/docs/cli/grant)
[Жалобы](/ru/ai/docs/cli/report)
[Owner](/ru/ai/docs/cli/owner)
[Publication](/ru/ai/docs/cli/publication)
[Eval](/ru/ai/docs/cli/eval)
### Веб
[Веб](/ru/ai/docs/web)
[Главная](/ru/ai/docs/web/home)
[Каталог](/ru/ai/docs/web/catalog)
[Карточка компонента](/ru/ai/docs/web/catalog-component)
[Карточка сетапа](/ru/ai/docs/web/catalog-setup)
[Региональные сервисы](/ru/ai/docs/web/services)
[Издатели](/ru/ai/docs/web/publishers)
[Content](/ru/ai/docs/web/content)
[Эта документация](/ru/ai/docs/web/docs)
[Контакт](/ru/ai/docs/web/contact)
[Правовые документы](/ru/ai/docs/web/legal)
[Вход](/ru/ai/docs/web/login)
[Аккаунт](/ru/ai/docs/web/account)
[Профиль](/ru/ai/docs/web/profile)
[Устройства](/ru/ai/docs/web/devices)
[Объекты](/ru/ai/docs/web/objects)
[Доступ](/ru/ai/docs/web/access)
[Жалобы](/ru/ai/docs/web/reports)
[Лайки](/ru/ai/docs/web/likes)
[Онбординг](/ru/ai/docs/web/onboarding)
[Публикация](/ru/ai/docs/web/publications)
### Компоненты
[Компоненты](/ru/ai/docs/components)
[instruction](/ru/ai/docs/components/instruction)
[skill](/ru/ai/docs/components/skill)
[mcp](/ru/ai/docs/components/mcp)
[hook](/ru/ai/docs/components/hook)
[command](/ru/ai/docs/components/command)
[agent](/ru/ai/docs/components/agent)
[plugin](/ru/ai/docs/components/plugin)
[setting](/ru/ai/docs/components/setting)
[Сетапы](/ru/ai/docs/setups)
### Публикация
[Публикация](/ru/ai/docs/publishing)
[Авторство](/ru/ai/docs/publishing/authoring)
### Доверие и безопасность
[Обзор](/ru/ai/docs/trust-and-safety)
[Проверки безопасности](/ru/ai/docs/security-checks)
[Диагностика](/ru/ai/docs/troubleshooting)
[cli](/ru/ai/docs/components/cli)
## Content
# Вход на сайте Вход создаёт браузерную сессию в защищённой HttpOnly cookie. Провайдеры — Google и GitHub. Поля пароля и magic-link email нет. Второй путь привязывает **CLI-устройство** к тому же аккаунту: CLI печатает код пользователя, вы одобряете его на сайте, CLI завершает. ## URL и кто их видит | Проекция | URL | Кому видно | | --- | --- | --- | | Human | `/{locale}/login` | всем | | Machine | `/{locale}/ai/login` | всем | | Одобрение устройства | `/{locale}/device-login` | после входа, чтобы одобрить | | Устройства (та же форма) | `/{locale}/devices` | после входа | `returnTo` должен начинаться с `/`. Всё остальное игнорируется, и посадка по умолчанию — `/{locale}/account`. Защищённые страницы отправляют сюда с `returnTo`, равным пути, который они хотели. `reason=session_expired` показывает **Сессия истекла. Войдите снова.** `status=error|cancel|conflict` соответствует Ошибка входа, Вход отменён или сообщению, что идентичность уже привязана. `/login` может открыть кто угодно. `/device-login` без сессии показывает **Сначала войдите, затем подтвердите код устройства.** и кнопку назад ко входу, сохраняя `user_code`. ## Для чего этот экран Вход нужен, чтобы: - начать OAuth Google или GitHub для браузера; - восстановиться после истекшей cookie; - скопировать команду входа CLI для устройства. `/device-login` или [Устройства](devices.md) нужны, чтобы ввести код, который напечатал CLI. [Онбординг](onboarding.md) — если аккаунт новый и всё ещё `onboarding_pending`. Вход **не**: - сливает два существующих аккаунта (конфликт — отказ); - создаёт локальную идентичность устройства (`device init` только в CLI); - хранит токен провайдера в localStorage; - входит в харнесс (сессии Claude Code / Codex / Grok Build не связаны). ## Что на экране | Элемент | Подпись | Эффект | | --- | --- | --- | | Заголовок | Вход | — | | Подзаголовок | Войдите через поддерживаемого провайдера. Сессия хранится в защищённой HttpOnly cookie. | — | | Google | Войти через Google | `/v1/auth/google/login?client=web&return_to=…` | | GitHub | Войти через GitHub | `/v1/auth/github/login?client=web&return_to=…` | | Копия CLI | Войти с устройства через CLI | `ai-stp task start --intent account --idempotency-key account-session-01 --json` | В mock/e2e кнопки POST в mock-действие вместо API. `?debug=1` с моками добавляет дополнительные симуляторы ошибки/отмены. Этот гейт не часть production. OAuth — same-origin `/v1/auth/…` (в разработке переписывается на API). Callback ставит session cookie. Step-up привязка **второго** провайдера к существующему аккаунту — `/v1/auth/link/{provider}` из [Аккаунта](account.md), не эта страница. ### Код устройства Поля `/device-login`: | Поле | Подпись | | --- | --- | | Код пользователя | Код пользователя | | Отправка | Подтвердить устройство | Ошибки: unknown (введите заново), expired (продолжите ту же account-задачу), resolved (уже использован), csrf (перезагрузите), failed (повторите). Успех: **Устройство подтверждено** — вернитесь в CLI; опрос должен завершиться. Human / Machine: machine-вход — заголовок, подзаголовок, повседневный account start как блок кода и ссылка на каталог. ## Соответствующие команды CLI Повседневный вход — intent `account`: ```bash ai-stp task start --intent account --idempotency-key account-session-01 --json ``` Expert leaves (`auth login` / `complete` / `logout`) — если незавершённый device code уже есть: ```text ai-stp auth login --provider github --json ai-stp auth login --provider google --json ai-stp auth complete --json ai-stp auth status --json ai-stp auth logout --json ai-stp link web --json ``` `--provider` обязателен и закрыт значениями `github` и `google`. `auth login` начинает поток и печатает код для одобрения. `auth complete` завершает, когда вы одобрили. `auth status` сообщает local-only, authenticated, expired или revoked. `auth logout` завершает облачную сессию и сохраняет локальные данные. `link web` печатает канонический URL сайта. Команды `ai-stp auth device` нет. Сайт копирует account start, не выдуманный leaf. Следуйте CLI. Идентичность устройства на машине отдельна: ```bash ai-stp device init --json ai-stp device show --json ``` `device init` не входит. `auth login` не создаёт устройство. Обычно нужны оба, в этом порядке, на новой установке. ## Тупики | Что видно | Что это значит | Что делать | | --- | --- | --- | | Ошибка входа | ошибка OAuth | повторите того же провайдера | | Вход отменён | вы прервали у провайдера | повторите или выберите другого | | Эта идентичность уже привязана к другому аккаунту | слияние отказано | используйте аккаунт, которому она уже принадлежит | | Сессия истекла | устаревшая cookie | войти; `returnTo` сохранён | | Нужен вход на device-login | нет браузерной сессии | войдите, код сохраняется | | Неизвестный код | опечатка | введите заново; не добавляйте пробелы | | Код истёк / уже использован | продолжите ту же account-задачу | `ai-stp task start --intent account --idempotency-key account-session-01 --json` | | Отправили на онбординг | новый аккаунт | примите две редакции | | Конфликт при привязке | этот Google/GitHub на другом аккаунте | сначала отвяжите там; слияния нет | Никогда не кладите код пользователя в тикет, скриншот публичного issue или паспорт. ## Связанные страницы - [Аккаунт](account.md) — после успешного входа в браузере. - [Устройства](devices.md) — список плюс та же форма одобрения. - [Онбординг](onboarding.md) — первое правовое принятие. - [Главная](home.md) — Войти с лендинга. - [Вход CLI](../cli/auth.md) — конверты тех же команд. - [Устройство](../cli/device.md) — локальная идентичность. - [Быстрый старт для человека](../quickstart/human.md) — локальная работа без аккаунта. ??? question "Нужен ли Вход, чтобы читать каталог?" Нет. Анонимные чтения каталога работают в браузере и как `ai-stp registry search --json`. Вход нужен для лайков, жалоб, устройств, объектов, грантов и confirm публикации.