Обзор

Добавьте «Войти через Paspo» на сайт — готовым SDK, AI-промптом или своим OAuth 2.0-клиентом.

Вход через Paspo позволяет пользователям входить на ваш сайт с аккаунтом Paspo ID. Paspo — стандартный провайдер OpenID Connect: ваша страница получает одноразовый код авторизации, а ваш сервер обменивает его на id_token с подтверждёнными e-mail, телефоном или именем пользователя.

Выберите способ интеграции

Вставьте один промпт в Claude Code, Cursor, Codex или Copilot — агент сам подключит фронтенд и бэкенд.

npm install @pingocean/paspo-sdk или один тег <script>. Попап, PKCE, FedCM и фолбэки SDK берёт на себя.

Готовые примеры для React, Next.js, Vue, Nuxt, Angular, Svelte и обычного HTML.

Без SDK: реализуйте OAuth 2.0 + PKCE сами или подключите Paspo в Auth.js, openid-client и другие OIDC-библиотеки.

Как это работает

  1. Пользователь нажимает Войти через Paspo на вашей странице. SDK генерирует state, nonce и PKCE code_verifier.
  2. Открывается окно Paspo https://paspo.id/oauth/authorize. Пользователь сканирует QR-код приложением Paspo или подтверждает текущую сессию и выбирает, какой e-mail / телефон передать.
  3. Окно закрывается, ваша страница получает одноразовый code (действует 60 секунд).
  4. Страница отправляет code и code_verifier на ваш сервер.
  5. Сервер вызывает POST https://paspo.id/api/w/v1/oauth/token с client_secret, проверяет полученный id_token и создаёт свою сессию.

В Chromium 141+, если вы запрашиваете только phone (без email), SDK сначала показывает встроенное окно входа браузера (FedCM) — одно нажатие для тех, кто уже вошёл в Paspo. Если браузер заблокировал попап, SDK переходит на полностраничный редирект.

Перед началом

Нужен зарегистрированный OAuth-клиент. Напишите в Поддержку и укажите:

Redirect URIТочные URL (без масок), например https://app.example.com/auth/paspo/callback. Должны быть на том же origin, что и страница с кнопкой.
ScopesЛюбые из openid, profile, email, phone.
Origins (опционально)https://app.example.com — нужен для окна FedCM.
Название, логотип, политика конфиденциальности, условияПоказываются на экране согласия.

Вы получите публичный client_id (используется в браузере) и client_secret (только для сервера).

client_secret никогда не попадает в браузер

Обмен кода всегда выполняется на вашем сервере. Не кладите client_secret во фронтенд-код, в переменные окружения с префиксами NEXT_PUBLIC_ / VITE_ / NUXT_PUBLIC_ и в мобильные приложения.

Эндпоинты

Issuerhttps://paspo.id
Discoveryhttps://paspo.id/.well-known/openid-configuration
Authorizehttps://paspo.id/oauth/authorize
Tokenhttps://paspo.id/api/w/v1/oauth/token
JWKShttps://paspo.id/api/w/v1/oauth/jwks
UserInfohttps://paspo.id/api/w/v1/oauth/userinfo
SDK (CDN)https://paspo.id/sdk/paspo.min.js

Предпочитайте значения из discovery-документа.

Дальше