# VK ID API: Показать «Продолжить как …» и выйти из аккаунта

Сценарий из mcp-everything. Актуально на 2026-10-24.

Быстрый повторный вход по маскированным данным и корректный выход с отзывом доступа.

1. Для экрана «Продолжить как Анна П.» не нужен access_token: POST /oauth2/public_info с client_id и id_token вернёт имя, первую букву фамилии, маскированные телефон и email и аватар.
2. Выход: POST /oauth2/logout с client_id и access_token завершает сессию пользователя в твоём приложении.
3. Если пользователь удаляет аккаунт или отвязывает VK ID, отзови разрешения: POST /oauth2/revoke с client_id и access_token. Ответ — {"response": 1}.
4. Из браузера передавай токены только в теле form-urlencoded: заголовок Authorization и JSON ломают CORS preflight.

```bash
curl -s -X POST https://id.vk.ru/oauth2/public_info \
  -d client_id=<client_id> -d id_token=<id_token>

curl -s -X POST https://id.vk.ru/oauth2/logout \
  -d client_id=<client_id> -d access_token=<access_token>

curl -s -X POST https://id.vk.ru/oauth2/revoke \
  -d client_id=<client_id> -d access_token=<access_token>
```

## Базовые 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 час.

## Методы сценария

### POST /oauth2/public_info — Маскированные данные пользователя

В `user`: `user_id`, `first_name`, `last_name` (первая буква), маскированные `phone` и `email`, `avatar`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `client_id` | body | string | да | ID приложения |
| `id_token` | body | string | да | ID-токен |

### POST /oauth2/revoke — Отзыв разрешений

Ответ: `{"response": 0 или 1}`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `client_id` | body | string | да | ID приложения |
| `access_token` | body | string | да | Access-токен |

### POST /oauth2/logout — Выход из аккаунта

Ответ: `{"response": 0 или 1}`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `client_id` | body | string | да | ID приложения |
| `access_token` | body | string | да | Access-токен |

## Нюансы

- Из браузера токен передаётся только в теле запроса с `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
