> ## Documentation Index
> Fetch the complete documentation index at: https://veriqa.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Вход и регистрация без пароля

> Базовый сценарий: QR на экране, подтверждение в мессенджере, регистрация тем же действием — что для этого нужно на стороне приложения.

Базовый сценарий Veriqa: пользователь открывает ваше приложение на десктопе, видит QR-код,
сканирует его камерой телефона и подтверждает вход в мессенджере. Форму заполнять не нужно,
пароль придумывать — тоже: **регистрация происходит тем же действием, что и вход**.

## Что делает ваше приложение

Ничего, кроме обычного OpenID Connect:

```http theme={null}
GET /connect/authorize
  ?client_id=my-app
  &response_type=code
  &scope=openid%20profile
  &redirect_uri=https://app.example.com/callback
  &state=…
  &nonce=…
  &code_challenge=…
  &code_challenge_method=S256
```

Дальше — стандартный обмен кода на токены. Никакого клиентского SDK, виджета или JS-компонента
Veriqa не требует: страницу входа с QR-кодом рисует сервер.

## Что происходит у пользователя

1. на экране появляется QR-код — это всё, что нужно для входа;
2. пользователь открывает камеру телефона, сканирует код и переходит по ссылке;
3. открывается привычное приложение — MAX, Telegram, WhatsApp или
   [другой мессенджер](/docs/ru/guides/supported-channels) (или письмо, если выбран канал Email);
4. пользователь подтверждает вход кнопкой — без пароля и без кода из SMS;
5. ваша auth-система выпускает токены, вход завершён.

<Note>
  Первый вход и все последующие выглядят для пользователя одинаково. Разница только на вашей
  стороне: если `sub` встречается впервые, вы заводите учётную запись, если нет — узнаёте
  существующую.
</Note>

## Что приезжает в claims

`sub` — стабильный идентификатор субъекта, по нему вы узнаёте вернувшегося пользователя. При
`scope=profile` добавляются человекочитаемое имя и связанные с ним поля; состав зависит от канала.

<Warning>
  **Email приезжает не от каждого канала.** Telegram адреса не отдаёт и не отдаст — учётная запись
  создаётся без него. Если email обязателен, используйте канал Email или спросите адрес отдельным
  шагом после первого входа. Как с этим справляются готовые CMS — в разделе
  [Veriqa в CMS](/docs/ru/integrations/overview).
</Warning>

## Если у пользователя нет мессенджера на этом устройстве

Так и задумано: подтверждение происходит **на другом устройстве**, на телефоне. Мессенджер не
обязан быть установлен там, откуда пользователь входит — именно этим сценарий отличается от
встроенных кнопок входа мессенджеров, где приложение и мессенджер должны быть на одной машине.

Вход на том же устройстве тоже поддерживается, но это запасной путь, а не основной.

## Дальше

<CardGroup cols={2}>
  <Card title="Привязка канала" icon="link" href="/docs/ru/scenarios/channel-linking">
    Тем же действием получить живой канал для уведомлений.
  </Card>

  <Card title="Полный поток OIDC" icon="route" href="/docs/ru/concepts/auth-flow">
    Что происходит между authorize и token.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.