Ключи доступа (OAuth 2.0 Credentials)
Используются на стороне Блога Инженера для подключения входа через Spec ID.
https://blog-ingenera.ru/wp-json/ingener/v1/social/auth/spechelp
/oauth/authorize.
💡 Связывание аккаунтов (Account Linking по Email)
Вопрос: Если у пользователя уже есть аккаунт с таким Email в Блоге Инженера на момент входа через SpecHelp, сохраняется ли старый вход по паролю?
Ответ: Да, сохраняются оба способа!
В эндпоинте /oauth/userinfo всегда передаётся "email_verified": true. На стороне WordPress-контроллера Блога при получении профиля выполняется поиск get_user_by('email', $email). Если пользователь найден, его ID связывается с профилем SpecHelp. Пользователь сможет входить в Блог и по своему существующему логину/паролю Блога, и в 1 клик через кнопку «Войти через SpecHelp».
Схема Authorization Code Flow
Классический безопасный протокол OAuth 2.0 (RFC 6749) с обменом через серверный бэкенд.
/oauth/authorize. Входит в Spec ID и подтверждает доступ для Блога.redirect_uri с одноразовым кодом ?code=...&state=....POST /oauth/token, получает access_token и забирает профиль из /oauth/userinfo.application/json, application/x-www-form-urlencoded, а также передачу реквизитов в заголовке Authorization: Basic.
| Параметр | Тип | Статус | Описание |
|---|---|---|---|
| client_id | string | Обязательный | blog_ingenera |
| client_secret | string | Обязательный | Секретный ключ проекта |
| code | string | Обязательный | Код из параметра $_GET['code'], время жизни 2 минуты |
| redirect_uri | string | Обязательный | Должен в точности совпадать с переданным на первом шаге |
curl -X POST https://id.specstage.ru/oauth/token \ -H "Content-Type: application/json" \ -d '{ "client_id": "blog_ingenera", "client_secret": "spk_sec_YOUR_CLIENT_SECRET", "code": "4b8c9f02...", "redirect_uri": "https://blog-ingenera.w.manu.team/wp-json/ingener/v1/social/auth/spechelp" }'
{
"access_token": "spk_3f8a92cb412d0891a27e0...",
"token_type": "Bearer",
"expires_in": 86400,
"scope": "openid profile email"
}
| Заголовок | Значение | Описание |
|---|---|---|
| Authorization | Bearer {access_token} |
Токен, полученный на шаге /oauth/token |
{
"id": 1054,
"sub": "1054",
"email": "ivan.petrov@example.com",
"email_verified": true,
"name": "Иван Петров",
"first_name": "Иван",
"last_name": "Петров",
"display_name": "Иван Петров",
"username": "ivan_petrov",
"avatar": "https://id.specstage.ru/files/avatars/avatar.png",
"phone": "+79991234567",
"is_pro": true,
"pro_expiration_date": "2027-03-15",
"entitlements": {
"pro_active": true,
"pro_expires_at": "2027-03-15",
"eisot_access": true,
"forum_access": true
}
}
Вход в Spec ID через Блог Инженера
Авторизация пользователей в Spec ID через аккаунт Блога Инженера.
На странице входа https://id.specstage.ru/login уже размещена фирменная кнопка «Войти через Блог—Инженера™ (PRO)».
https://blog-ingenera.w.manu.team/oauth/authorize?client_id=...&redirect_to=https://id.specstage.ruwindow.opener.postMessage(code, origin) и закрывается.POST /wp-json/ingener/v1/oauth/code, забирает профиль и мгновенно активирует PRO-статус.