# VK ID API: POST /oauth2/auth — Обмен кода на токены

`grant_type=authorization_code`. В ответе: `access_token`, `refresh_token`, `id_token`, `token_type`, `expires_in`, `user_id`, `state`, `scope`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `grant_type` | body | string | да | authorization_code |
| `code` | body | string | да | Код из редиректа |
| `code_verifier` | body | string | да | Исходная строка PKCE |
| `redirect_uri` | body | string | да | Тот же адрес возврата |
| `client_id` | body | string | да | ID приложения |
| `device_id` | body | string | да | device_id из редиректа |
| `state` | body | string | да | Строка state |
| `service_token` | body | string | нет | Для конфиденциальных приложений |
| `ip` | body | string | нет | IP пользователя |

## Базовые URL

- Боевой: `https://id.vk.ru`

## Авторизация

Тип: OAuth 2.0

Пользователь проходит `GET /authorize` и возвращается на `redirect_uri` с `code` и `device_id`; код обменивается на `access_token`, `refresh_token` и `id_token` методом `POST /oauth2/auth`. PKCE обязателен: `code_verifier` — 43–128 символов, `code_challenge` — base64url от SHA-256 строки `code_verifier`. Access token действует 1 час.

## Нюансы

- Из браузера токен передаётся только в теле запроса с `Content-Type: application/x-www-form-urlencoded`: заголовок `Authorization` и JSON вызывают ошибку preflight CORS.
- Неверный `grant_type` или `response_type` даёт ответ 404.
- После обновления токенов старая пара `access_token`/`refresh_token` перестаёт работать.
- `public_info` работает с `id_token` и отдаёт маскированные данные, `user_info` — с `access_token` и полные данные.

## Сценарии с этим методом

- [Сделать вход через VK ID на сайте](https://mcp-everything.ru/integrations/vk-id/scenarios/sdelat-vhod-cherez-vk-id-na-sayte.md)
- [Продлевать сессию без повторного входа](https://mcp-everything.ru/integrations/vk-id/scenarios/prodlevat-sessiyu-bez-povtornogo-vhoda.md)

---

Если этого недостаточно — официальная документация: https://id.vk.ru/about/business/go/docs/ru/vkid/latest/vk-id/connection/api-description
Вся интеграция одним документом: https://mcp-everything.ru/integrations/vk-id.md
